pointless-lenses: Pointless Lenses library

[ bsd3, generics, library ] [ Propose Tags ]

Pointless Lenses is library of bidirectional lenses (http://www.cis.upenn.edu/~bcpierce/papers/newlenses-popl.pdf) defined in the point-free style of programming. Generic bidirectional lenses can be defined over inductive types by relying in a set of lifted lens combinators from the standard point-free combinators. Virtually any recursive lens can be defined by combining the lenses for the recursion patterns of catamorphisms and anamorphism. The library also provides QuickCheck procedures to test the well-behavedness of user-defined lens transformations.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.0.1, 0.0.2, 0.0.3, 0.0.4, 0.0.5, 0.0.6, 0.0.7, 0.0.8, 0.0.9
Dependencies base (>=3 && <5), haskell98, pointless-haskell (>=0.0.2), process [details]
License BSD-3-Clause
Author Alcino Cunha <alcino@di.uminho.pt>, Hugo Pacheco <hpacheco@di.uminho.pt>
Maintainer Hugo Pacheco <hpacheco@di.uminho.pt>
Category Generics
Home page http://haskell.di.uminho.pt/wiki/Pointless+Lenses
Uploaded by HugoPacheco at 2010-03-20T18:20:44Z
Distributions
Reverse Dependencies 3 direct, 0 indirect [details]
Downloads 6373 total (20 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for pointless-lenses-0.0.5

[back to package description]
Pointless Lenses

This cabal package can be installed with:

$ cabal install pointless-lenses

For a manual install, execute:

$ runhaskell Setup.lhs configure
$ runhaskell Setup.lhs build
$ runhaskell Setup.lhs install

You can now start playing with the example code that comes with the library, under Language.Pointless.Examples.Examples.
The easiest way is to create a new module that imports some library modules

module Test where

import Test.QuickCheck.Test
import Generics.Pointless.Lenses
import Generics.Pointless.Lenses.Examples.Examples

and interpret it

$ ghci Test.hs

We can now test the well-behavedness of some lens, for example:

> quickCheck (wb filter_lns)
+++ OK, passed 100 tests.

Or run some example and later check what it is actually doing:
> exampleT
Fst (1,'a')