| |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
Description | |||||||||||||||||||||||||||||||||||||
Strict 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 |