fclabels- First class accessor labels implemented as lenses.

Safe HaskellSafe-Inferred




The Point data type which generalizes the different lenses and forms the basis for vertical composition using the Applicative type class.


The point data type that generalizes lens.

data Point cat g i f o Source

Abstract Point datatype. The getter and modifier operations work in some category. The type of the value pointed to might change, thereby changing the type of the outer structure.


Point (cat f o) (cat (cat o i, f) g) 


Alternative (Point Partial f view f) 
Arrow arr => Functor (Point arr f i f) 
Arrow arr => Applicative (Point arr f i f) 

get :: Point cat g i f o -> cat f o Source

Get the getter category from a Point.

modify :: Point cat g i f o -> cat (cat o i, f) g Source

Get the modifier category from a Point.

set :: Arrow arr => Point arr g i f o -> arr (i, f) g Source

Get the setter category from a Point.

identity :: ArrowApply arr => Point arr f f o o Source

Identity Point. Cannot change the type.

compose :: ArrowApply cat => Point cat t i b o -> Point cat g t f b -> Point cat g i f o Source

Point composition.

Working with isomorphisms.

data Iso cat i o infix 8 Source

An isomorphism is like a Category that works in two directions.


Iso infix 8 


fw :: cat i o
bw :: cat o i


Category * cat => Category * (Iso cat)

Isomorphisms are categories.

inv :: Iso cat i o -> Iso cat o i Source

Flip an isomorphism.

Specialized lens contexts.

type Total = (->) Source

Context that represents computations that always produce an output.

type Partial = Kleisli Maybe Source

Context that represents computations that might silently fail.

type Failing e = Kleisli (Either e) Source

Context that represents computations that might fail with some error.

Arrow type class for failing with some error.

class Arrow a => ArrowFail e a where Source

The ArrowFail class is similar to ArrowZero, but additionally embeds some error value in the computation instead of throwing it away.


failArrow :: a e c Source