Safe Haskell | Safe |
---|---|
Language | Haskell98 |
Agda.Utils.Lens
Contents
Description
A cut-down implementation of lenses, with names taken from Edward Kmett's lens package.
- type Lens' i o = forall f. Functor f => (i -> f i) -> o -> f o
- (^.) :: o -> Lens' i o -> i
- set :: Lens' i o -> i -> o -> o
- over :: Lens' i o -> (i -> i) -> o -> o
- use :: MonadState o m => Lens' i o -> m i
- (.=) :: MonadState o m => Lens' i o -> i -> m ()
- (%=) :: MonadState o m => Lens' i o -> (i -> i) -> m ()
- (%==) :: (MonadState o m, Functor m) => Lens' i o -> (i -> m i) -> m ()
- (%%=) :: (MonadState o m, Functor m) => Lens' i o -> (i -> m (i, r)) -> m r
- view :: MonadReader o m => Lens' i o -> m i
- locally :: MonadReader o m => Lens' i o -> (i -> i) -> m a -> m a
- (<&>) :: Functor m => m a -> (a -> b) -> m b
Type-preserving lenses.
type Lens' i o = forall f. Functor f => (i -> f i) -> o -> f o
Van Laarhoven style homogeneous lenses. Mnemoic: "Lens inner outer".
Elementary lens operations.
State accessors and modifiers.
use :: MonadState o m => Lens' i o -> m i
Read a part of the state.
(.=) :: MonadState o m => Lens' i o -> i -> m () infix 4
Write a part of the state.
(%=) :: MonadState o m => Lens' i o -> (i -> i) -> m () infix 4
Modify a part of the state.
(%==) :: (MonadState o m, Functor m) => Lens' i o -> (i -> m i) -> m () infix 4
Modify a part of the state monadically.
(%%=) :: (MonadState o m, Functor m) => Lens' i o -> (i -> m (i, r)) -> m r infix 4
Modify a part of the state monadically, and return some result.
Read-only state accessors and modifiers.
view :: MonadReader o m => Lens' i o -> m i
Ask for part of read-only state.
locally :: MonadReader o m => Lens' i o -> (i -> i) -> m a -> m a
Modify a part of the state in a subcomputation.