ether-0.4.1.0: Monad transformers and classes

Safe HaskellNone
LanguageHaskell2010

Control.Monad.Ether.Writer

Contents

Description

Synopsis

MonadWriter class

class (Monoid w, Monad m) => MonadWriter tag w m | m tag -> w where Source #

Methods

writer :: proxy tag -> (a, w) -> m a Source #

Embed a simple writer action.

tell :: proxy tag -> w -> m () Source #

Append a value to the accumulator within the monad.

listen :: proxy tag -> m a -> m (a, w) Source #

Execute an action and add its accumulator to the value of the computation.

pass :: proxy tag -> m (a, w -> w) -> m a Source #

Execute an action which returns a value and a function, and return the value, applying the function to the accumulator.

Instances

(LiftListen t, LiftPass t, Monad (t m), MonadWriter k tag w m, Monoid w) => MonadWriter k tag w (t m) Source # 

Methods

writer :: proxy w -> (a, t m) -> m a Source #

tell :: proxy w -> t m -> m () Source #

listen :: proxy w -> m a -> m (a, t m) Source #

pass :: proxy w -> m (a, t m -> t m) -> m a Source #

(Monoid w, Monad m, (~) * w w') => MonadWriter k tag w (WriterT k tag w' m) Source # 

Methods

writer :: proxy w -> (a, WriterT k tag w' m) -> m a Source #

tell :: proxy w -> WriterT k tag w' m -> m () Source #

listen :: proxy w -> m a -> m (a, WriterT k tag w' m) Source #

pass :: proxy w -> m (a, WriterT k tag w' m -> WriterT k tag w' m) -> m a Source #

listens :: MonadWriter tag w m => proxy tag -> (w -> b) -> m a -> m (a, b) Source #

Execute an action and add the result of applying the given function to its accumulator to the value of the computation.

censor :: MonadWriter tag w m => proxy tag -> (w -> w) -> m a -> m a Source #

Execute an action and apply a function to its accumulator.

The Writer monad

type Writer tag w = WriterT tag w Identity Source #

The parametrizable writer monad.

Computations can accumulate a monoid value.

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

runWriter :: proxy tag -> Writer tag w a -> (a, w) Source #

Runs a Writer and returns both the normal value and the final accumulator.

execWriter :: proxy tag -> Writer tag w a -> w Source #

Runs a Writer and returns the final accumulator, discarding the normal value.

The WriterT monad transformer

type WriterT tag w = TaggedTrans tag (WriterT w) Source #

The writer monad transformer.

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

writerT :: proxy tag -> m (a, w) -> WriterT tag w m a Source #

Constructor for computations in the writer monad transformer.

runWriterT :: proxy tag -> WriterT tag w m a -> m (a, w) Source #

Runs a WriterT and returns both the normal value and the final accumulator.

execWriterT :: Monad m => proxy tag -> WriterT tag w m a -> m w Source #

Runs a WriterT and returns the final accumulator, discarding the normal value.