Описание тега lenses

В функциональном программировании линза - это составной полевой аксессуар. Линзы позволяют управлять вложенными структурами данных в краткой форме и без побочных эффектов.

В функциональном программировании линза - это составной полевой аксессуар. Линзы позволяют управлять вложенными структурами данных в краткой форме и без побочных эффектов.

Линзы определяют set функция и getфункция. Учитывая значениеa типа A и ценность b типа B, set b a возвращает новое значение a' типа A с некоторым полем внутри, установленным на b. Учитывая значениеa типа A, get a возвращает значение b типа B содержалась в a.

Чтобы составить линзу, get а также set должен следовать нескольким простым законам:

  1. Данный a а также b, get (set b a) = b.

  2. Данный a, b, а также b', get (set b' (set b a)) = b'.

  3. Данный a а также b, set (get a) a = a.

Поскольку линзы следуют этим законам, их можно безопасно собирать. Это делает их подходящими для лаконичного управления вложенными структурами данных.