packages feed

lens-1.7: lens.cabal

name:          lens
category:      Data, Lenses
version:       1.7
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/*.hs
  test/*.hs
  README.markdown

-- Build examples
flag examples
  default: False
  manual: True
  

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.Action
                   Control.Lens.Fold
                   Control.Lens.Getter
                   Control.Lens.Indexed
                   Control.Lens.IndexedGetter
                   Control.Lens.IndexedFold
                   Control.Lens.IndexedLens
                   Control.Lens.IndexedSetter
                   Control.Lens.IndexedTraversal
                   Control.Lens.Internal
                   Control.Lens.Iso
                   Control.Lens.Representable
                   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

-- Verify the results of the '>>>'s distributed throughout
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

-- Verify that Template Haskell expansion works
test-suite templates
  type: exitcode-stdio-1.0
  main-is: templates.hs
  build-depends:
    base == 4.*,
    lens == 1.7
  ghc-options: -Wall -Werror -threaded
  hs-source-dirs: test

-- Verify the properties of lenses with QuickCheck
test-suite properties
  type: exitcode-stdio-1.0
  main-is: properties.hs
  build-depends:
    base         == 4.*,
    lens         == 1.7,
    QuickCheck   >= 2.4 && < 2.6,
    transformers >= 0.3 && < 0.5
  ghc-options: -w -threaded
  hs-source-dirs: test

executable pong
  if !flag(examples)
    buildable: False

  build-depends:
    base       == 4.*,
    containers >= 0.4.2 && < 0.6,
    gloss      == 1.7.*,
    lens       == 1.7,
    mtl        >= 2.0.1 && < 2.2,
    random     == 1.0.*
  main-is: Pong.hs
  hs-source-dirs: examples