lens-simple: simplified import of elementary lens-family combinators
This module, Lens.Simple,
just re-exports the main modules from Russell O'Connor's
lens-family package.
lens-family
is particularly remarkable for its minute number of dependencies:
apart from mtl
they are all ghc 'boot' libraries.
Lens.Simple
also re-exports makeLenses
and
other convenient TH incantations from Dan Burton's associated
lens-family-th.
The idea, then, is just to make a sort of low-powered, minimal-dependency, lens-family
equivalent of
the 800 lb gorilla of lens library imports:
import Control.Lens
namely, the light-weight and elegant:
import Lens.Simple
Check it out, it's even one character shorter!
As an illustration of the simplicity of the
fundamental van Laarhoven lens combinators - and their homogeneity with
Control.Lens
- note that the gloss
pong example
from the lens
library examples directory - which continues to be
the best introductory lens tutorial precisely by saying nothing -
requires only this abbreviating change of imports.
If you make that program more complicated,
you might of course end up needing
the more sophisticated material in Control.Lens
and
its immense mass of dependencies.
Within its more limited sphere, though, lens-family
accords as
far as possible with lens
, so this switch
will often be all that is necessary to begin using them.
This module was originally intended to simplify the use of packages that
follow the original promise of the van Laarhoven lenses.
Correct practice is to export lenses without depending on a lens-library, where possible.
In basic cases these just use familiar Prelude
types, after all.
Examples of best practices in this respect are e.g. lens-family-th which
doesn't depend on lens-family
despite its name and pipes-related packages like
pipes-bytestring
and pipes-group.
Because of the heavily monadic character of the latter libraries, the
extra material in Control.Lens
is rarely of use anyway; one sticks largely
to view
, set
, over
and, for state operations, zoom
.
Note that lenses and other combinators are here frequently a bit more
specialized than their Control.Lens
equivalents:
for example, _1 and _2 are here
familiarly specialized to act just on real Haskell
pairs.
[Skip to Readme]
Downloads
- lens-simple-0.1.0.7.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.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4, 0.1.0.5, 0.1.0.6, 0.1.0.7, 0.1.0.8, 0.1.0.9 |
---|---|
Change log | changelog |
Dependencies | base (>=4 && <5), lens-family (>=1.2 && <1.3), lens-family-core (>=1.2 && <1.3), lens-family-th (>=0.4 && <0.5), mtl (>=2.1 && <2.3), transformers (>=0.2.0 && <5) [details] |
License | BSD-3-Clause |
Copyright | 2012, 2013, 2014 Russell O'Connor; 2015 Michael Thompson |
Author | michaelt |
Maintainer | what_is_it_to_do_anything@yahoo.com |
Category | Lenses |
Home page | https://github.com/michaelt/lens-simple |
Source repo | head: git clone https://github.com/michaelt/lens-simple |
Uploaded | by MichaelThompson at 2015-07-07T03:41:08Z |
Distributions | |
Reverse Dependencies | 8 direct, 45 indirect [details] |
Downloads | 8842 total (2 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs uploaded by user Build status unknown [no reports yet] |