Описание тега lenses
В функциональном программировании линза - это составной полевой аксессуар. Линзы позволяют управлять вложенными структурами данных в краткой форме и без побочных эффектов.
Линзы определяют set
функция и get
функция. Учитывая значениеa
типа A
и ценность b
типа B
, set b a
возвращает новое значение a'
типа A
с некоторым полем внутри, установленным на b
. Учитывая значениеa
типа A
, get a
возвращает значение b
типа B
содержалась в a
.
Чтобы составить линзу, get
а также set
должен следовать нескольким простым законам:
Данный
a
а такжеb
,get (set b a) = b
.Данный
a
,b
, а такжеb'
,get (set b' (set b a)) = b'
.Данный
a
а такжеb
,set (get a) a = a
.
Поскольку линзы следуют этим законам, их можно безопасно собирать. Это делает их подходящими для лаконичного управления вложенными структурами данных.