Safe Haskell | Safe |
---|---|
Language | Haskell98 |
Lenses that allow polymorphic updates.
- data Lens cat f o
- lens :: cat f o -> cat (cat o i, f) g -> Lens cat (f -> g) (o -> i)
- point :: Point cat g i f o -> Lens cat (f -> g) (o -> i)
- get :: Lens cat (f -> g) (o -> i) -> cat f o
- modify :: Lens cat (f -> g) (o -> i) -> cat (cat o i, f) g
- set :: Arrow arr => Lens arr (f -> g) (o -> i) -> arr (i, f) g
- iso :: ArrowApply cat => Iso cat f o -> Iso cat g i -> Lens cat (f -> g) (o -> i)
- (>-) :: Arrow arr => Lens arr (j -> a) (i -> b) -> Lens arr (f -> g) (o -> i) -> Point arr g j f o
- for :: Arrow arr => Lens arr (j -> a) (i -> b) -> Lens arr (f -> g) (o -> i) -> Point arr g j f o
The polymorphic Lens type.
Abstract polymorphic 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.
ArrowApply arr => Category * (Lens arr) Source | Category instance for monomorphic lenses. |
:: cat f o | Getter. |
-> cat (cat o i, f) g | Modifier. |
-> Lens cat (f -> g) (o -> i) |
Create a lens out of a getter and setter.
modify :: Lens cat (f -> g) (o -> i) -> cat (cat o i, f) g Source
Get the modifier arrow from a lens.
set :: Arrow arr => Lens arr (f -> g) (o -> i) -> arr (i, f) g Source
Get the setter arrow from a lens.
iso :: ArrowApply cat => Iso cat f o -> Iso cat g i -> Lens cat (f -> g) (o -> i) Source
Lift a polymorphic isomorphism into a Lens
.
The isomorphism needs to be passed in twice to properly unify.