SimpleH-1.2: A light, clean and powerful Haskell utility library

Safe HaskellNone

Algebra.Monad.Writer

Contents

Synopsis

The Writer monad

class (Monad m, Monoid w) => MonadWriter w m | m -> w whereSource

Methods

tell :: w -> m ()Source

listen :: m a -> m (w, a)Source

censor :: m (a, w -> w) -> m aSource

Instances

Monoid w => MonadWriter w ((,) w) 
MonadWriter w m => MonadWriter w (ListT m) 
MonadWriter w m => MonadWriter w (StateT s m) 
MonadWriter w m => MonadWriter w (ReaderT r m) 
(Monoid w, Monad m) => MonadWriter w (WriterT w m) 
(Monoid w, Monad m) => MonadWriter w (ParserT w s m) 
(Monad m, Monoid w) => MonadWriter w (RWST r w s m) 

mute :: (MonadWriter w m, Monoid w) => m a -> m aSource

intercept :: (MonadWriter w m, Monoid w) => m a -> m (w, a)Source

The Writer transformer

data WriterT w m a Source

A simple Writer monad

Instances

(Monoid w, Monad m) => MonadWriter w (WriterT w m) 
(Monoid w, MonadReader r m) => MonadReader r (WriterT w m) 
(Monoid w, MonadState r m) => MonadState r (WriterT w m) 
Monoid w => MonadTrans (WriterT w) 
Monoid w => MonadInternal (WriterT w) 
(Unit m, Monoid w) => Unit (WriterT w m) 
(Monoid w, MonadCont m) => MonadCont (WriterT w m) 
(Monoid w, MonadList m) => MonadList (WriterT w m) 
(Monoid w, MonadFix m) => MonadFix (WriterT w m) 
(Monoid w, Monad m) => Monad (WriterT w m) 
(Monoid w, Monad m) => Applicative (WriterT w m) 
Functor m => Functor (WriterT w m) 
Foldable m => Foldable (WriterT w m) 
Traversable m => Traversable (WriterT w m) 
Ring (m (a, Void, w)) => Ring (WriterT w m a) 
Monoid (m (a, Void, w)) => Monoid (WriterT w m a) 
Semigroup (m (a, Void, w)) => Semigroup (WriterT w m a) 

type Writer w a = WriterT w Id aSource

_writerT :: (Functor m, Functor m') => Iso (WriterT w m a) (WriterT w' m' b) (m (w, a)) (m' (w', b))Source

_writer :: Iso (Writer w a) (Writer w' b) (w, a) (w', b)Source