The pointless-lenses package

[Tags: bsd3, library]

Pointless Lenses is library of bidirectional lenses ( 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 and

[Skip to ReadMe]


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 (>=, derive (>=2.5.4), pointless-haskell (>=0.0.7), process, QuickCheck (>= [details]
AuthorAlcino Cunha <>, Hugo Pacheco <>
MaintainerHugo Pacheco <>
Home page
UploadedThu Jan 26 13:44:00 UTC 2012 by HugoPacheco
Downloads1393 total (44 in last 30 days)
0 []
StatusDocs not available [build log]
All reported builds failed as of 2015-11-13 [all 6 reports]



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]