| class (Monoid w, Monad m) => MonadWriter w m | m -> w where |
| tell :: w -> m () | | listen :: m a -> m (a, w) | | pass :: m (a, w -> w) -> m a |
|
|
| listens :: MonadWriter w m => (w -> w) -> m a -> m (a, w) |
|
| censor :: MonadWriter w m => (w -> w) -> m a -> m a |
|
| newtype Writer w a = Writer {} |
|
| runWriter :: Writer w a -> (a, w) |
|
| execWriter :: Writer w a -> w |
|
| mapWriter :: ((a, w) -> (b, w')) -> Writer w a -> Writer w' b |
|
| newtype WriterT w m a = WriterT {} |
|
| runWriterT :: WriterT w m a -> m (a, w) |
|
| execWriterT :: Monad m => WriterT w m a -> m w |
|
| mapWriterT :: (m (a, w) -> n (b, w')) -> WriterT w m a -> WriterT w' n b |
|
| module Control.Monad |
|
| module Control.Monad.Monoid |
|
| module Control.Monad.Fix |
|
| module Control.Monad.Trans |