lens-1.6: lens.cabal
name: lens
category: Data, Lenses
version: 1.6
license: BSD3
cabal-version: >= 1.8
license-file: LICENSE
author: Edward A. Kmett
maintainer: Edward A. Kmett <ekmett@gmail.com>
stability: provisional
homepage: http://github.com/ekmett/lens/
bug-reports: http://github.com/ekmett/lens/issues
copyright: Copyright (C) 2012 Edward A. Kmett
synopsis: Lenses, Folds and Traversals
description:
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
@'Simple' 'Lens' Bar Foo@, just export a function with the signature:
.
> 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'.
build-type: Simple
tested-with: GHC == 7.4.1
extra-source-files: .travis.yml examples/Pong.hs examples/Test.hs
source-repository head
type: git
location: git://github.com/ekmett/lens.git
library
build-depends:
base >= 4.3 && < 5,
containers >= 0.4.2 && < 0.6,
mtl >= 2.0.1 && < 2.2,
template-haskell >= 2.4 && < 2.8,
transformers >= 0.3 && < 0.4
exposed-modules: Control.Exception.Lens
Control.Lens
Control.Lens.Internal
Control.Lens.Representable
Control.Lens.Fold
Control.Lens.Getter
Control.Lens.Indexed
Control.Lens.Iso
Control.Lens.Setter
Control.Lens.TH
Control.Lens.Traversal
Control.Lens.Type
Data.Bits.Lens
Data.Complex.Lens
Data.Dynamic.Lens
Data.Either.Lens
Data.List.Lens
Data.Pair.Lens
Data.IntMap.Lens
Data.IntSet.Lens
Data.Map.Lens
Data.Sequence.Lens
Data.Set.Lens
Data.Tree.Lens
Language.Haskell.TH.Lens
-- platform
build-depends: array >= 0.3.0.2 && < 0.5
exposed-modules: Data.Array.Lens
build-depends: bytestring >= 0.9.1.10 && < 0.10
exposed-modules: Data.ByteString.Lens Data.ByteString.Lazy.Lens
build-depends: text >= 0.11.1.5 && < 0.12
exposed-modules: Data.Text.Lens Data.Text.Lazy.Lens
build-depends: parallel >= 3.1.0.1 && < 3.3
exposed-modules: Control.Parallel.Strategies.Lens Control.Seq.Lens
other-extensions:
BangPatterns
CPP
DeriveDataTypeable
FlexibleContexts
FlexibleInstances
FunctionalDependencies
LiberalTypeSynonyms
MultiParamTypeClasses
Rank2Types
RankNTypes
TemplateHaskell
TypeFamilies
TypeOperators
UndecidableInstances
if (impl(ghc>=7.4))
other-extensions: Trustworthy
build-depends: ghc-prim
exposed-modules: GHC.Generics.Lens
ghc-options: -Wall -fwarn-tabs -O2 -fdicts-cheap -funbox-strict-fields
hs-source-dirs: src
test-suite doctests
type: exitcode-stdio-1.0
main-is: doctests.hs
build-depends: base == 4.*,
doctest >= 0.8 && <= 0.9
ghc-options: -Wall -Werror -threaded
hs-source-dirs: test