Safe Haskell | None |
---|

- type :-> = LensM Identity
- lens :: (a -> b) -> (a -> b -> a) -> a :-> b
- get :: (a :-> b) -> a -> b
- set :: (a :-> b) -> a -> b -> a
- modify :: (a :-> b) -> (b -> b) -> a -> a
- type :~> = LensM Maybe
- lensM :: (a -> Maybe b) -> (a -> Maybe (b -> a)) -> a :~> b
- getM :: (a :~> b) -> a -> Maybe b
- setM :: (a :~> b) -> a -> b -> Maybe a
- modifyM :: (a :~> b) -> (b -> b) -> a -> Maybe a

# Documentation

This is a subset of `Lens`

, exporting only the basic API.
Furthermore, `get`

, `lensM`

, getM, setM, and modifyM are exported with
more restrictive types than are found in Data.Yall.Lens, for simplicity.

You should either import this module, or `Lens`

.

# Pure lenses

lens :: (a -> b) -> (a -> b -> a) -> a :-> bSource

Create a pure Lens from a getter and setter

lens g = lensM (fmap return g) . fmap (fmap return)

set :: (a :-> b) -> a -> b -> aSource

Run the getter function of a pure lens

set l b = runIdentity . setM l a

# Partial lenses

lensM :: (a -> Maybe b) -> (a -> Maybe (b -> a)) -> a :~> bSource

Create a partial lens from a getter and setter