This package provides first class(†) functional references. In addition to the usual operations of getting, setting and composition, plus integration with the state monad, lens families provide some unique features:
Cast projection functions to read-only lenses
Cast "toList" functions to read-only traversals
Cast semantic editor combinators to modify-only traversals.
(†) For optimal first-class support use the
lens-family package with rank 2 / rank N polymorphism.
Lens.Family.Clone allows for first-class support of lenses and traversals for those who require Haskell 98.