| Copyright | (c) Andy Gill 2001 (c) Oregon Graduate Institute of Science and Technology 2001 |
|---|---|
| License | BSD-style (see the file LICENSE) |
| Maintainer | R.Paterson@city.ac.uk |
| Stability | experimental |
| Portability | portable |
| Safe Haskell | Safe |
| Language | Haskell98 |
Control.Monad.Trans.RWS.Lazy
Contents
Description
A monad transformer that combines ReaderT, WriterT and StateT.
This version is lazy; for a strict version with the same interface,
see Control.Monad.Trans.RWS.Strict.
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 :: (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 :: Monad m => w -> RWST r w s m ()
- listen :: Monad m => RWST r w s m a -> RWST r w s m (a, w)
- listens :: Monad m => (w -> b) -> RWST r w s m a -> RWST r w s m (a, b)
- pass :: Monad m => RWST r w s m (a, w -> w) -> RWST r w s m a
- censor :: 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 => CallCC m (a, s, w) (b, s, w) -> CallCC (RWST r w s m) a b
- liftCallCC' :: Monoid w => CallCC m (a, s, w) (b, s, w) -> CallCC (RWST r w s m) a b
- liftCatch :: Catch e m (a, s, w) -> Catch e (RWST r 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 a Source #
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
newtype RWST r w s m a Source #
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 a Source #
Constructor for computations in the reader monad (equivalent to asks ).
Writer operations
writer :: Monad m => (a, w) -> RWST r w s m a Source #
Construct a writer computation from a (result, output) pair.
State operations
state :: (Monoid w, Monad m) => (s -> (a, s)) -> RWST r w s m a Source #
Construct a state monad computation from a state transformer function.
get :: (Monoid w, Monad m) => RWST r w s m s Source #
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 => CallCC m (a, s, w) (b, s, w) -> CallCC (RWST r w s m) a b Source #
Uniform lifting of a callCC operation to the new monad.
This version rolls back to the original state on entering the
continuation.