Skip to content
Go to file

Latest commit

* Add type synonym for affine traversal

* Formulate Index in terms of AffineTraversal'

Sorry for the ugly duplication with At, maybe we want to put them in the same module? Then index i = at i <<< _Just

* Add `AffineTraversal` and `Stall`

* Fix build

* Re-export Stall

* Fix the Index instance of Set

* Really fix the Index instance of Set

* Fix AffineTraversal intro text.

Co-authored-by: Nicholas Scheel <>

Git stats


Failed to load latest commit information.


Latest release Build status Pursuit Maintainer: garyb Maintainer: thomashoneyman

Pure profunctor lenses. A mechanism for updating, viewing, and setting values within nested data structures. As in:

> structure = Tuple (Tuple (Tuple "hi!" 3) 2) 1

> import Data.Lens
> _leftmost = _1 <<< _1 <<< _1

> view _leftmost structure

> set _leftmost "Bye!" structure 
(Tuple (Tuple (Tuple "Bye!" 3) 2) 1)

> over _leftmost String.toUpper structure
(Tuple (Tuple (Tuple "HI!" 3) 2) 1)


# with Bower
bower install purescript-profunctor-lenses

# with Spago
spago install profunctor-lenses


Module documentation is published on Pursuit. You can find examples in the tests and the examples directory.

There are other in-depth materials for learning about profunctor optics and lenses in PureScript.


Read the contribution guidelines to get started and see helpful related resources.

You can’t perform that action at this time.