| 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 Effecs
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.