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. 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]


Versions 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 BSD3
Author Alcino Cunha <>, Hugo Pacheco <>
Maintainer Hugo Pacheco <>
Stability Unknown
Category Generics
Home page
Uploaded Thu Jan 14 17:30:08 UTC 2010 by HugoPacheco
Distributions NixOS:0.0.9
Downloads 1749 total (8 in the last 30 days)
0 []
Status Docs not available [build log]
All reported builds failed as of 2016-12-30 [all 7 reports]


  • Generics
    • Pointless
      • Generics.Pointless.Lenses
        • Generics.Pointless.Lenses.Combinators
        • Examples
          • Generics.Pointless.Lenses.Examples.Examples
        • Reader
          • Generics.Pointless.Lenses.Reader.RecursionPatterns
        • Generics.Pointless.Lenses.RecursionPatterns


Maintainer's Corner

For package maintainers and hackage trustees

Readme for pointless-lenses

Readme for pointless-lenses-0.0.3

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')