| Portability | portable |
|---|---|
| Stability | experimental |
| Maintainer | ross@soi.city.ac.uk |
| Safe Haskell | Safe-Infered |
Control.Monad.Trans.RWS.Lazy
Contents
Description
A monad transformer that combines ReaderT, WriterT and StateT.
This version is lazy; for a strict version, see
Control.Monad.Trans.RWS.Strict, which has the same interface.
Synopsis
- type RWS r w s = RWST r w s Identity
- rws :: (r -> s -> (a, s, w)) -> RWS r w s a
- runRWS :: RWS r w s a -> r -> s -> (a, s, w)
- evalRWS :: RWS r w s a -> r -> s -> (a, w)
- execRWS :: RWS r w s a -> r -> s -> (s, w)
- mapRWS :: ((a, s, w) -> (b, s, w')) -> RWS r w s a -> RWS r w' s b
- withRWS :: (r' -> s -> (r, s)) -> RWS r w s a -> RWS r' w s a
- newtype RWST r w s m a = RWST {
- runRWST :: r -> s -> m (a, s, w)
- evalRWST :: Monad m => RWST r w s m a -> r -> s -> m (a, w)
- execRWST :: Monad m => RWST r w s m a -> r -> s -> m (s, w)
- mapRWST :: (m (a, s, w) -> n (b, s, w')) -> RWST r w s m a -> RWST r w' s n b
- withRWST :: (r' -> s -> (r, s)) -> RWST r w s m a -> RWST r' w s m a
- reader :: (Monoid w, Monad m) => (r -> a) -> RWST r w s m a
- ask :: (Monoid w, Monad m) => RWST r w s m r
- local :: (Monoid w, Monad m) => (r -> r) -> RWST r w s m a -> RWST r w s m a
- asks :: (Monoid w, Monad m) => (r -> a) -> RWST r w s m a
- writer :: Monad m => (a, w) -> RWST r w s m a
- tell :: (Monoid w, Monad m) => w -> RWST r w s m ()
- listen :: (Monoid w, Monad m) => RWST r w s m a -> RWST r w s m (a, w)
- listens :: (Monoid w, Monad m) => (w -> b) -> RWST r w s m a -> RWST r w s m (a, b)
- pass :: (Monoid w, Monad m) => RWST r w s m (a, w -> w) -> RWST r w s m a
- censor :: (Monoid w, Monad m) => (w -> w) -> RWST r w s m a -> RWST r w s m a
- state :: (Monoid w, Monad m) => (s -> (a, s)) -> RWST r w s m a
- get :: (Monoid w, Monad m) => RWST r w s m s
- put :: (Monoid w, Monad m) => s -> RWST r w s m ()
- modify :: (Monoid w, Monad m) => (s -> s) -> RWST r w s m ()
- gets :: (Monoid w, Monad m) => (s -> a) -> RWST r w s m a
- liftCallCC :: Monoid w => ((((a, s, w) -> m (b, s, w)) -> m (a, s, w)) -> m (a, s, w)) -> ((a -> RWST r w s m b) -> RWST r w s m a) -> RWST r w s m a
- liftCallCC' :: Monoid w => ((((a, s, w) -> m (b, s, w)) -> m (a, s, w)) -> m (a, s, w)) -> ((a -> RWST r w s m b) -> RWST r w s m a) -> RWST r w s m a
- liftCatch :: (m (a, s, w) -> (e -> m (a, s, w)) -> m (a, s, w)) -> RWST l w s m a -> (e -> RWST l w s m a) -> RWST l w s m a
The RWS monad
type RWS r w s = RWST r w s Identity Source
A monad containing an environment of type r, output of type w
and an updatable state of type s.
rws :: (r -> s -> (a, s, w)) -> RWS r w s aSource
Construct an RWS computation from a function.
(The inverse of runRWS .)
runRWS :: RWS r w s a -> r -> s -> (a, s, w)Source
Unwrap an RWS computation as a function.
(The inverse of rws .)
Arguments
RWS computation to execute
initial environment
initial value
final value and output
Evaluate a computation with the given initial state and environment, returning the final value and output, discarding the final state.
Arguments
RWS computation to execute
initial environment
initial value
final state and output
Evaluate a computation with the given initial state and environment, returning the final state and output, discarding the final value.
The RWST monad transformer
A monad transformer adding reading an environment of type r,
collecting an output of type w and updating a state of type s
to an inner monad m.
Instances
Arguments
computation to execute
initial environment
initial value
computation yielding final value and output
Evaluate a computation with the given initial state and environment, returning the final value and output, discarding the final state.
Arguments
computation to execute
initial environment
initial value
computation yielding final state and output
Evaluate a computation with the given initial state and environment, returning the final state and output, discarding the final value.
Reader operations
reader :: (Monoid w, Monad m) => (r -> a) -> RWST r w s m aSource
Constructor for computations in the reader monad (equivalent to asks ).
Writer operations
writer :: Monad m => (a, w) -> RWST r w s m aSource
Construct a writer computation from a (result, output) pair.
tell :: (Monoid w, Monad m) => w -> RWST r w s m () Source
is an action that produces the output tell ww.
State operations
state :: (Monoid w, Monad m) => (s -> (a, s)) -> RWST r w s m aSource
Construct a state monad computation from a state transformer function.
get :: (Monoid w, Monad m) => RWST r w s m sSource
Fetch the current value of the state within the monad.
put :: (Monoid w, Monad m) => s -> RWST r w s m () Source
sets the state within the monad to put ss.
Lifting other operations
liftCallCC :: Monoid w => ((((a, s, w) -> m (b, s, w)) -> m (a, s, w)) -> m (a, s, w)) -> ((a -> RWST r w s m b) -> RWST r w s m a) -> RWST r w s m aSource
Uniform lifting of a callCC operation to the new monad.
This version rolls back to the original state on entering the
continuation.