mirror of
https://github.com/michaelt/lens-simple.git
synced 2024-08-16 17:10:36 +03:00
92 lines
5.5 KiB
Plaintext
92 lines
5.5 KiB
Plaintext
name: lens-simple
|
|
version: 0.1.0.9
|
|
synopsis: simplified import of elementary lens-family combinators
|
|
|
|
description: This module, <http://hackage.haskell.org/package/lens-simple/docs/Lens-Simple.html Lens.Simple>,
|
|
just re-exports the main modules from Russell O\'Connor's
|
|
<http://hackage.haskell.org/package/lens-family lens-family> package, the
|
|
original van Laarhoven-O'Connor lens library.
|
|
@lens-family@ is particularly remarkable for its minute number of dependencies:
|
|
(apart from <http://hackage.haskell.org/package/mtl mtl>
|
|
they are all ghc \'boot\' libraries); but more importantly for its
|
|
extreme conceptual simplicity and theoretical soundness. Much of
|
|
the material it contains is well-explained, from a tutorial point of view, by
|
|
<http://hackage.haskell.org/package/lens-tutorial lens-tutorial> It is independent,
|
|
self-standing and readily intelligible apart from any darker
|
|
more general system of combinators that might attempt to extend it. Much
|
|
of it ought to be in the Prelude.
|
|
.
|
|
Convenient import of the elementary combinators from @lens-family@,
|
|
however, a little complicated. The idea of this trivial module, 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!
|
|
.
|
|
The material in this familar <http://hackage.haskell.org/package/lens-tutorial elementary lens tutorial>
|
|
will work fine if you swap imports in the
|
|
<http://hackage.haskell.org/package/lens-tutorial-1.0.0/docs/src/Control-Lens-Tutorial.html source>
|
|
and follow along in ghci as prompted.
|
|
.
|
|
As another illustration of the simplicity of the
|
|
fundamental van Laarhoven-O'Connor lens combinators - and their homogeneity with
|
|
@Control.Lens@ - note that the gloss
|
|
<https://github.com/michaelt/lens-family-simple/blob/master/examples/Pong.hs pong example>
|
|
from the @lens@ library examples directory - which continues to be
|
|
among the best introductory lens tutorials 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. On the other hand,
|
|
you might just need some of the additional material
|
|
present in the similarly demystifying
|
|
<http://hackage.haskell.org/package/microlens microlens>
|
|
or <http://hackage.haskell.org/package/microlens-th microlens-th> and
|
|
the associated modules.
|
|
.
|
|
This module was originally intended to simplify the use of packages that
|
|
follow the original promise of the van Laarhoven-O'Connor 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. <http://hackage.haskell.org/package/lens-family-th lens-family-th> which
|
|
doesn't depend on @lens-family@ despite its name and pipes-related packages like
|
|
<http://hackage.haskell.org/package/pipes-bytestring pipes-bytestring>
|
|
and <http://hackage.haskell.org/package/pipes-group pipes-group>.
|
|
.
|
|
@Lens.Simple@ also re-exports convenient TH incantations like
|
|
@makeLenses@ from Dan Burton's associated
|
|
<http://hackage.haskell.org/package/lens-family-th lens-family-th>.
|
|
.
|
|
|
|
homepage: https://github.com/michaelt/lens-simple
|
|
license: BSD3
|
|
license-file: LICENSE
|
|
author: michaelt
|
|
maintainer: what_is_it_to_do_anything@yahoo.com
|
|
copyright: 2012, 2013, 2014 Russell O'Connor; 2015 Michael Thompson
|
|
category: Lenses
|
|
build-type: Simple
|
|
extra-source-files: README.md, changelog
|
|
cabal-version: >=1.10
|
|
source-repository head
|
|
type: git
|
|
location: https://github.com/michaelt/lens-simple
|
|
|
|
library
|
|
exposed-modules: Lens.Simple
|
|
build-depends: base == 4.*
|
|
, transformers >= 0.2.0 && < 6
|
|
, mtl >=2.1 && <2.3
|
|
, lens-family == 1.2.*
|
|
, lens-family-core == 1.2.*
|
|
, lens-family-th < 0.6
|
|
default-language: Haskell2010
|