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:
Polymorphic updating
Traversals
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.