transformers-0.2.1.0: Concrete functor and monad transformersSource codeContentsIndex
Control.Monad.Trans.Writer.Strict
Portabilityportable
Stabilityexperimental
Maintainerlibraries@haskell.org
Contents
The Writer monad
The WriterT monad transformer
Writer operations
Lifting other operations
Description

The strict WriterT monad transformer, which adds collection of outputs (such as a count or string output) to a given monad.

This version builds its output strictly; for a lazy version, see Control.Monad.Trans.Writer.Lazy, which has the same interface.

This monad transformer provides only limited access to the output during the computation. For more general access, use Control.Monad.Trans.State instead.

Synopsis
type Writer w = WriterT w Identity
writer :: (a, w) -> Writer w a
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 :: 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
tell :: (Monoid w, Monad m) => w -> WriterT w m ()
listen :: (Monoid w, Monad m) => WriterT w m a -> WriterT w m (a, w)
listens :: (Monoid w, Monad m) => (w -> b) -> WriterT w m a -> WriterT w m (a, b)
pass :: (Monoid w, Monad m) => WriterT w m (a, w -> w) -> WriterT w m a
censor :: (Monoid w, Monad m) => (w -> w) -> WriterT w m a -> WriterT w m a
liftCallCC :: Monoid w => ((((a, w) -> m (b, w)) -> m (a, w)) -> m (a, w)) -> ((a -> WriterT w m b) -> WriterT w m a) -> WriterT w m a
liftCatch :: (m (a, w) -> (e -> m (a, w)) -> m (a, w)) -> WriterT w m a -> (e -> WriterT w m a) -> WriterT w m a
The Writer monad
type Writer w = WriterT w IdentitySource

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.

writer :: (a, w) -> Writer w aSource
Construct a writer computation from a (result, output) pair. (The inverse of runWriter.)
runWriter :: Writer w a -> (a, w)Source
Unwrap a writer computation as a (result, output) pair. (The inverse of writer.)
execWriter :: Writer w a -> wSource

Extract the output from a writer computation.

mapWriter :: ((a, w) -> (b, w')) -> Writer w a -> Writer w' bSource

Map both the return value and output of a computation using the given function.

The WriterT monad transformer
newtype WriterT w m a Source

A writer monad parameterized by:

  • w - the output to accumulate.
  • m - The inner monad.

The return function produces the output mempty, while >>= combines the outputs of the subcomputations using mappend.

Constructors
WriterT
runWriterT :: m (a, w)
execWriterT :: Monad m => WriterT w m a -> m wSource

Extract the output from a writer computation.

mapWriterT :: (m (a, w) -> n (b, w')) -> WriterT w m a -> WriterT w' n bSource

Map both the return value and output of a computation using the given function.

Writer operations
tell :: (Monoid w, Monad m) => w -> WriterT w m ()Source
tell w is an action that produces the output w.
listen :: (Monoid w, Monad m) => WriterT w m a -> WriterT w m (a, w)Source

listen m is an action that executes the action m and adds its output to the value of the computation.

listens :: (Monoid w, Monad m) => (w -> b) -> WriterT w m a -> WriterT w m (a, b)Source

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.

pass :: (Monoid w, Monad m) => WriterT w m (a, w -> w) -> WriterT w m aSource

pass m is an action that executes the action m, which returns a value and a function, and returns the value, applying the function to the output.

censor :: (Monoid w, Monad m) => (w -> w) -> WriterT w m a -> WriterT w m aSource

censor f m is an action that executes the action m and applies the function f to its output, leaving the return value unchanged.

Lifting other operations
liftCallCC :: Monoid w => ((((a, w) -> m (b, w)) -> m (a, w)) -> m (a, w)) -> ((a -> WriterT w m b) -> WriterT w m a) -> WriterT w m aSource
Lift a callCC operation to the new monad.
liftCatch :: (m (a, w) -> (e -> m (a, w)) -> m (a, w)) -> WriterT w m a -> (e -> WriterT w m a) -> WriterT w m aSource
Lift a catchError operation to the new monad.
Produced by Haddock version 2.6.0