strict-writer-0.1.0.1: A stricter writer, which uses StateT in order to avoid space leaks.

Safe HaskellNone
LanguageHaskell2010

Control.Monad.Writer.Stricter

Synopsis

Documentation

data WriterT s m a Source #

A monad transformer similar to WriterT, except that it does not leak space.

Instances

(Monoid s, Monad m) => MonadWriter s (WriterT s m) Source # 

Methods

writer :: (a, s) -> WriterT s m a #

tell :: s -> WriterT s m () #

listen :: WriterT s m a -> WriterT s m (a, s) #

pass :: WriterT s m (a, s -> s) -> WriterT s m a #

MonadTrans (WriterT s) Source # 

Methods

lift :: Monad m => m a -> WriterT s m a #

Monad m => Monad (WriterT s m) Source # 

Methods

(>>=) :: WriterT s m a -> (a -> WriterT s m b) -> WriterT s m b #

(>>) :: WriterT s m a -> WriterT s m b -> WriterT s m b #

return :: a -> WriterT s m a #

fail :: String -> WriterT s m a #

Functor m => Functor (WriterT s m) Source # 

Methods

fmap :: (a -> b) -> WriterT s m a -> WriterT s m b #

(<$) :: a -> WriterT s m b -> WriterT s m a #

Monad m => Applicative (WriterT s m) Source # 

Methods

pure :: a -> WriterT s m a #

(<*>) :: WriterT s m (a -> b) -> WriterT s m a -> WriterT s m b #

(*>) :: WriterT s m a -> WriterT s m b -> WriterT s m b #

(<*) :: WriterT s m a -> WriterT s m b -> WriterT s m a #

(Alternative m, Monad m, Monoid s) => Alternative (WriterT s m) Source # 

Methods

empty :: WriterT s m a #

(<|>) :: WriterT s m a -> WriterT s m a -> WriterT s m a #

some :: WriterT s m a -> WriterT s m [a] #

many :: WriterT s m a -> WriterT s m [a] #

runWriterT :: Monoid s => WriterT s m a -> m (a, s) Source #

pattern WriterT :: forall m s a. (Functor m, Monoid s) => m (a, s) -> WriterT s m a Source #

runWeighted :: Monoid s => Weighted s a -> (a, s) Source #

pattern Weighted :: forall s a. Monoid s => (a, s) -> Weighted s a Source #

execWriterT :: (Monad m, Monoid s) => WriterT s m a -> m s Source #

evalWriterT :: (Monad m, Monoid s) => WriterT s m a -> m a Source #