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]


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), containers (>=, derive (>=2.5.4), haskell98, pointless-haskell (>=0.0.7), process, QuickCheck (>= [details]
License BSD3
Author Alcino Cunha <>, Hugo Pacheco <>
Maintainer Hugo Pacheco <>
Stability Unknown
Category Generics
Home page
Uploaded Tue Dec 20 14:56:52 UTC 2011 by HugoPacheco
Distributions NixOS:0.0.9
Downloads 1676 total (14 in the last 30 days)
0 []
Status Docs not available [build log]
All reported builds failed as of 2015-11-24 [all 5 reports]


  • Data
    • Data.Diff
    • Data.Relation
    • Data.Shape
  • Generics
    • Pointless
      • Generics.Pointless.DLenses
        • Generics.Pointless.DLenses.Combinators
        • Examples
          • Generics.Pointless.DLenses.Examples.Examples
        • Generics.Pointless.DLenses.RecursionPatterns
        • Generics.Pointless.DLenses.ShapeCombinators
      • Generics.Pointless.Lenses
        • Generics.Pointless.Lenses.Combinators
        • Examples
          • Generics.Pointless.Lenses.Examples.Examples
          • Generics.Pointless.Lenses.Examples.Imdb
          • Generics.Pointless.Lenses.Examples.MapExamples
          • Generics.Pointless.Lenses.Examples.Recs
        • Generics.Pointless.Lenses.PartialCombinators
        • Generics.Pointless.Lenses.RecursionPatterns


Maintainer's Corner

For package maintainers and hackage trustees

Readme for pointless-lenses

Readme for pointless-lenses-0.0.8

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]