packages feed

lens-simple-0.1.0.7: lens-simple.cabal

name:                lens-simple
version:             0.1.0.7
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.
                     @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.
                     @Lens.Simple@ also re-exports @makeLenses@ and 
                     other convenient TH incantations from Dan Burton's associated 
                     <http://hackage.haskell.org/package/lens-family-th 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
                     <https://github.com/michaelt/lens-family-simple/blob/master/examples/Pong.hs 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. <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>. 
                     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. 

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 && < 5
                       , mtl >=2.1 && <2.3
                       , lens-family == 1.2.*
                       , lens-family-core == 1.2.*
                       , lens-family-th == 0.4.*
  default-language:    Haskell2010