packages feed

lens-simple-0.1.0.8: lens-simple.cabal

name:                lens-simple
version:             0.1.0.8
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 <http://hackage.haskell.org/package/lens-tutorial lens-tutorial>
                     will work fine if you make this substitution in the underlying 
                     <http://hackage.haskell.org/package/lens-tutorial-1.0.0/docs/src/Control-Lens-Tutorial.html source>
                     and follow along 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 @makeLenses@ and 
                     other convenient TH incantations 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 && < 5
                       , mtl >=2.1 && <2.3
                       , lens-family == 1.2.*
                       , lens-family-core == 1.2.*
                       , lens-family-th == 0.4.*
  default-language:    Haskell2010