fclabels-2.0: First class accessor labels implemented as lenses.

Safe HaskellSafe-Inferred




Lenses that only allow monomorphic updates. Monomorphic lenses are simply polymorphic lenses with the input and output type variables constraint to the same type.



type Lens cat f o = Lens cat (f -> f) (o -> o)Source

Abstract monomorphic lens datatype. The getter and setter functions work in some category. Categories allow for effectful lenses, for example, lenses that might fail or use state.



:: cat f o


-> cat (cat o o, f) f


-> Lens cat f o 

Create a lens out of a getter and setter.

get :: Lens cat f o -> cat f oSource

Get the getter arrow from a lens.

modify :: Lens cat f o -> cat (cat o o, f) fSource

Get the modifier arrow from a lens.

point :: Point cat f o f o -> Lens cat f oSource

Create lens from a Point.

set :: Arrow arr => Lens arr f o -> arr (o, f) fSource

Get the setter arrow from a lens.

iso :: ArrowApply cat => Iso cat f o -> Lens cat f oSource

Lift an isomorphism into a Lens.

Specialized monomorphic lens operators.

type :-> f o = Lens Total f oSource

Total monomorphic lens.

type :~> f o = Lens Partial f oSource

Partial monomorphic lens.