newtype RWS r w s a = RWS {runRWS :: (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 {} |
|
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 |
|
module Control.Monad.Reader |
|
module Control.Monad.Writer |
|
module Control.Monad.State |