| |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
| Description | |||||||||||||||||||||||||||||||||||||
Lazy writer monads. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/pubs/springschool.html) Advanced School of Functional Programming, 1995. | |||||||||||||||||||||||||||||||||||||
| Synopsis | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
| MonadWriter class | |||||||||||||||||||||||||||||||||||||
| class (Monoid w, Monad m) => MonadWriter w m | m -> w where | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
| listens :: MonadWriter w m => (w -> b) -> m a -> m (a, b) | |||||||||||||||||||||||||||||||||||||
listens f m is an action that executes the action m and adds the result of applying f to the output to the value of the computation. | |||||||||||||||||||||||||||||||||||||
| censor :: MonadWriter w m => (w -> w) -> m a -> m a | |||||||||||||||||||||||||||||||||||||
censor f m is an action that executes the action m and applies the function f to its output, leaving the return value unchanged. | |||||||||||||||||||||||||||||||||||||
| The Writer monad | |||||||||||||||||||||||||||||||||||||
| type Writer w = WriterT w Identity | |||||||||||||||||||||||||||||||||||||
A writer monad parameterized by the type w of output to accumulate. The return function produces the output mempty, while >>= combines the outputs of the subcomputations using mappend. | |||||||||||||||||||||||||||||||||||||
| runWriter :: Writer w a -> (a, w) | |||||||||||||||||||||||||||||||||||||
| Unwrap a writer computation as a (result, output) pair. (The inverse of writer.) | |||||||||||||||||||||||||||||||||||||
| execWriter :: Writer w a -> w | |||||||||||||||||||||||||||||||||||||
Extract the output from a writer computation.
| |||||||||||||||||||||||||||||||||||||
| mapWriter :: ((a, w) -> (b, w')) -> Writer w a -> Writer w' b | |||||||||||||||||||||||||||||||||||||
Map both the return value and output of a computation using the given function. | |||||||||||||||||||||||||||||||||||||
| The WriterT monad transformer | |||||||||||||||||||||||||||||||||||||
| newtype WriterT w m a | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
| execWriterT :: Monad m => WriterT w m a -> m w | |||||||||||||||||||||||||||||||||||||
Extract the output from a writer computation.
| |||||||||||||||||||||||||||||||||||||
| mapWriterT :: (m (a, w) -> n (b, w')) -> WriterT w m a -> WriterT w' n b | |||||||||||||||||||||||||||||||||||||
Map both the return value and output of a computation using the given function.
| |||||||||||||||||||||||||||||||||||||
| module Control.Monad | |||||||||||||||||||||||||||||||||||||
| module Control.Monad.Fix | |||||||||||||||||||||||||||||||||||||
| module Control.Monad.Trans | |||||||||||||||||||||||||||||||||||||
| module Data.Monoid | |||||||||||||||||||||||||||||||||||||
| Produced by Haddock version 2.7.2 | |||||||||||||||||||||||||||||||||||||