lens: Lenses, Folds and Traversals
The combinators in Control.Lens
provide a highly generic toolbox for composing
families of getters, folds, isomorphisms, traversals, setters and lenses and their indexed variants.
Lens Families
For a longer description of why you should care about lens families, and an overview of why we use 4 parameters a, b, c, and d instead of just 2, see http://comonad.com/reader/2012/mirrored-lenses/.
Sometimes you won't need the flexibility those extra parameters afford you and you can use
type Simple f a b = f a a b b
to describe a Simple
Setter
, Simple
Traversal
, Simple
Lens
or Simple
Iso
.
Avoiding Dependencies
Note: If you merely want your library to provide lenses you may not
have to actually import any lens library at all. For, say, a
, just export a function with the signature:Simple
Lens
Bar Foo
foo :: Functor f => (Foo -> f Foo) -> Bar -> f Bar
and then you can compose it with other lenses using nothing more than (.)
from the Prelude.
Deriving Lenses
You can derive lenses automatically for many data types using makeLenses
, and if a
container is fully characterized by its lenses, you can use Representable
to
automatically derive Functor
, Applicative
, Monad
, and Distributive
.
Modules
[Index]
- Control
- Exception
- Control.Lens
- Parallel
- Strategies
- Seq
- Data
- Array
- Bits
- ByteString
- Complex
- Dynamic
- Either
- IntMap
- IntSet
- List
- Map
- Pair
- Sequence
- Set
- Text
- Tree
- GHC
- Generics
- Language
- Haskell
Downloads
- lens-1.6.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
Versions [RSS] | 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.0.1, 1.0.2, 1.0.3, 1.1, 1.1.1, 1.2, 1.3, 1.3.1, 1.4, 1.4.1, 1.5, 1.6, 1.7, 1.7.1, 1.8, 1.9, 1.9.1, 2.0, 2.1, 2.2, 2.3, 2.4, 2.4.0.2, 2.5, 2.6, 2.6.1, 2.7, 2.7.0.1, 2.8, 2.9, 3.0, 3.0.1, 3.0.2, 3.0.3, 3.0.4, 3.0.5, 3.0.6, 3.1, 3.2, 3.3, 3.4, 3.5, 3.5.1, 3.6, 3.6.0.1, 3.6.0.2, 3.6.0.3, 3.6.0.4, 3.7, 3.7.0.1, 3.7.0.2, 3.7.1, 3.7.1.1, 3.7.1.2, 3.7.2, 3.7.3, 3.7.4, 3.7.5, 3.7.6, 3.8, 3.8.0.1, 3.8.0.2, 3.8.1, 3.8.2, 3.8.3, 3.8.4, 3.8.5, 3.8.6, 3.8.7, 3.8.7.1, 3.8.7.2, 3.8.7.3, 3.9, 3.9.0.1, 3.9.0.2, 3.9.0.3, 3.9.1, 3.9.2, 3.10, 3.10.0.1, 3.10.1, 3.10.2, 3.10.3, 4.0, 4.0.1, 4.0.2, 4.0.3, 4.0.4, 4.0.5, 4.0.6, 4.0.7, 4.1, 4.1.1, 4.1.2, 4.1.2.1, 4.2, 4.3, 4.3.1, 4.3.2, 4.3.3, 4.4, 4.4.0.1, 4.4.0.2, 4.5, 4.6, 4.6.0.1, 4.7, 4.7.0.1, 4.8, 4.9, 4.9.1, 4.10, 4.11, 4.11.1, 4.12, 4.12.1, 4.12.2, 4.12.3, 4.13, 4.13.1, 4.13.2, 4.13.2.1, 4.14, 4.15, 4.15.1, 4.15.2, 4.15.3, 4.15.4, 4.16, 4.16.1, 4.17, 4.17.1, 4.18, 4.18.1, 4.19, 4.19.1, 4.19.2, 5, 5.0.1, 5.1, 5.1.1, 5.2, 5.2.1, 5.2.2, 5.2.3, 5.3, 5.3.1, 5.3.2 |
---|---|
Dependencies | array (>=0.3.0.2 && <0.5), base (>=4.3 && <5), bytestring (>=0.9.1.10 && <0.10), containers (>=0.4.2 && <0.6), ghc-prim, mtl (>=2.0.1 && <2.2), parallel (>=3.1.0.1 && <3.3), template-haskell (>=2.4 && <2.8), text (>=0.11.1.5 && <0.12), transformers (>=0.3 && <0.4) [details] |
License | BSD-3-Clause |
Copyright | Copyright (C) 2012 Edward A. Kmett |
Author | Edward A. Kmett |
Maintainer | Edward A. Kmett <ekmett@gmail.com> |
Category | Data, Lenses |
Home page | http://github.com/ekmett/lens/ |
Bug tracker | http://github.com/ekmett/lens/issues |
Source repo | head: git clone git://github.com/ekmett/lens.git |
Uploaded | by EdwardKmett at 2012-08-07T06:19:05Z |
Distributions | Arch:5.2.3, Debian:4.18.1, Fedora:5.2.2, FreeBSD:4.12.3, LTSHaskell:5.2.3, NixOS:5.2.3, Stackage:5.3.2, openSUSE:5.2.3 |
Reverse Dependencies | 1433 direct, 6445 indirect [details] |
Downloads | 421717 total (1046 in the last 30 days) |
Rating | 3.0 (votes: 50) [estimated by Bayesian average] |
Your Rating | |
Status | Docs uploaded by user Build status unknown [no reports yet] |