The pointless-lenses package

[Tags: bsd3, library]

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. Recursive lenses can be defined by combining the lenses for the recursion patterns of catamorphisms and anamorphism. More refined lens behavior can be achieved a more operation-based variant of delta-lenses (). The library also provides QuickCheck procedures to test the well-behavedness of user-defined lens transformations. More details can be found in the accompanying papers http://alfa.di.uminho.pt/~hpacheco/publications/mpc10.pdf and http://alfa.di.uminho.pt/~hpacheco/publications/hdlenses.pdf


[Skip to ReadMe]

Properties

Versions0.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
Change logNone available
Dependenciesbase (>=3 && <5), containers (>=0.4.0.0), derive (>=2.5.4), pointless-haskell (>=0.0.7), process, QuickCheck (>=2.4.0.1) [details]
LicenseBSD3
AuthorAlcino Cunha <alcino@di.uminho.pt>, Hugo Pacheco <hpacheco@di.uminho.pt>
MaintainerHugo Pacheco <hpacheco@di.uminho.pt>
CategoryGenerics
Home pagehttp://haskell.di.uminho.pt/wiki/Pointless+Lenses
UploadedThu Jan 26 13:44:00 UTC 2012 by HugoPacheco
Downloads1269 total (54 in last 30 days)
Votes
0 []
StatusDocs not available [build log]
All reported builds failed as of 2015-05-20 [all 2 reports]

Modules

Downloads

Maintainers' corner

For package maintainers and hackage trustees

Readme for pointless-lenses-0.0.9

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_left_lns)
+++ OK, passed 100 tests.

Or run some example and later check what it is actually doing:
> put filter_left_lns ([1,2,3],[Left 0,Right 'a',Left 4])
[Left 1,Right 'a',Left 2,Left 3]