ether-0.2.1.0: Monad transformers and classes

Safe HaskellNone
LanguageHaskell2010

Control.Monad.Ether.Writer.Class

Description

Synopsis

Documentation

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

Minimal complete definition

(writer | tell), listen, pass

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

MonadWriter tag w m => MonadWriter tag w (MaybeT m) 
MonadWriter tag w m => MonadWriter tag w (IdentityT m) 
(Monoid w', MonadWriter tag w m) => MonadWriter tag w (WriterT w' m) 
MonadWriter tag w m => MonadWriter tag w (StateT s m) 
MonadWriter tag w m => MonadWriter tag w (StateT s m) 
MonadWriter tag w m => MonadWriter tag w (ReaderT r m) 
MonadWriter tag w m => MonadWriter tag w (ExceptT e m) 
MonadWriter tag w m => MonadWriter tag w (WrappedEther tag' m) 
MonadWriter tag w m => MonadWriter tag w (StateT tag' e m) 
MonadWriter tag w m => MonadWriter tag w (StateT tag' e m) 
MonadWriter tag w m => MonadWriter tag w (ExceptT tag' e m) 
MonadWriter tag w m => MonadWriter tag w (ReaderT tag' r m) 
(Monoid w', MonadWriter tag w m) => MonadWriter tag w (WriterT tag' w' m) 
(Monoid w, Monad m) => MonadWriter tag w (WriterT tag w m) 

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.