lens package:lens-family

Build a lens from a getter and setter family. Caution: In order for the generated lens family to be well-defined, you must ensure that the three lens laws hold:
  • getter (setter s a) === a
  • setter s (getter s) === s
  • setter (setter s a1) a2 === setter s a2
Lens Families This package provides first class functional references in Van Laarhoven style supporting the following optics:
  • Lenses (view, over)
  • Traversals (toListOf, matching, over)
  • Setters (over)
  • Grates (zipWithOf, under, review)
  • Resetters (under)
  • Adapters (view, review)
  • Grids (toListOf, over / under, review)
  • Prisms (matching, over / under, review)
  • Getters (view)
  • Folders (toListOf)
  • Reviewers (review)