| Portability | MTPCs, FDs, Rank2 |
|---|---|
| Stability | experimental |
| Maintainer | Edward Kmett <ekmett@gmail.com> |
| Safe Haskell | Safe-Inferred |
Control.Lens.Action
Description
- type Action m s a = forall f r. Effective m r f => (a -> f a) -> s -> f s
- act :: Monad m => (s -> m a) -> Action m s a
- acts :: Action m (m a) a
- perform :: Monad m => Acting m a s t a b -> s -> m a
- performs :: Monad m => Acting m e s t a b -> (a -> e) -> s -> m e
- liftAct :: (MonadTrans trans, Monad m) => Acting m a s t a b -> Action (trans m) s a
- (^!) :: Monad m => s -> Acting m a s t a b -> m a
- type MonadicFold m s a = forall f r. (Effective m r f, Applicative f) => (a -> f a) -> s -> f s
- type Acting m r s t a b = (a -> Effect m r b) -> s -> Effect m r t
Composable Actions
act :: Monad m => (s -> m a) -> Action m s aSource
Construct an Action from a monadic side-effect
>>>["hello","world"]^!folded.act (\x -> [x,x ++ "!"])["helloworld","helloworld!","hello!world","hello!world!"]
performs :: Monad m => Acting m e s t a b -> (a -> e) -> s -> m eSource
Perform an Action and modify the result.
(^!) :: Monad m => s -> Acting m a s t a b -> m aSource
Perform an Action
>>>["hello","world"]^!folded.act putStrLnhello world
Folds with Effects
type MonadicFold m s a = forall f r. (Effective m r f, Applicative f) => (a -> f a) -> s -> f sSource
A MonadicFold is a Fold enriched with access to a Monad for side-effects.
Every Fold can be used as a MonadicFold, that simply ignores the access to the Monad.
You can compose a MonadicFold with another MonadicFold using (.) from the Prelude.