The pointless-lenses package

[ Tags: bsd3, generics, library ] [ Propose Tags ]

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), pointless-haskell (>=0.0.7), process, QuickCheck (>= [details]
License BSD3
Author Alcino Cunha <>, Hugo Pacheco <>
Maintainer Hugo Pacheco <>
Category Generics
Home page
Uploaded Thu Jan 26 13:44:00 UTC 2012 by HugoPacheco
Distributions NixOS:0.0.9
Downloads 1885 total (19 in the last 30 days)
Rating 0.0 (0 ratings) [clear rating]
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2016-12-25 [all 8 reports]
Hackage Matrix CI


  • 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-0.0.9

[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_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]