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 |