Safe Haskell | Safe-Inferred |
---|
This module provides the proxy transformer equivalent of WriterT
.
This module is even stricter than Control.Monad.Trans.Writer.Strict
by
being strict in the accumulated monoid.
The underlying implementation uses the state monad to avoid quadratic blowup from left-associative binds.
- data WriterP w p a' a b' b m r
- writer :: (Monad m, Proxy p, Monoid w) => (r, w) -> WriterP w p a' a b' b m r
- writerT :: (Monad m, Proxy p, Monoid w) => m (r, w) -> WriterP w p a' a b' b m r
- writerP :: (Monad m, Proxy p, Monoid w) => p a' a b' b m (r, w) -> WriterP w p a' a b' b m r
- runWriterP :: (Monad m, Proxy p, Monoid w) => WriterP w p a' a b' b m r -> p a' a b' b m (r, w)
- runWriterK :: (Monad m, Proxy p, Monoid w) => (q -> WriterP w p a' a b' b m r) -> q -> p a' a b' b m (r, w)
- execWriterP :: (Monad m, Proxy p, Monoid w) => WriterP w p a' a b' b m r -> p a' a b' b m w
- execWriterK :: (Monad m, Proxy p, Monoid w) => (q -> WriterP w p a' a b' b m r) -> q -> p a' a b' b m w
- tell :: (Monad m, Proxy p, Monoid w) => w -> WriterP w p a' a b' b m ()
- censor :: (Monad m, Proxy p, Monoid w) => (w -> w) -> WriterP w p a' a b' b m r -> WriterP w p a' a b' b m r
WriterP
data WriterP w p a' a b' b m r Source
The strict Writer
proxy transformer
ProxyTrans (WriterP w) | |
PFunctor (WriterP w) | |
MonadPlusP p => MonadPlusP (WriterP w p) | |
Proxy p => ProxyInternal (WriterP w p) | |
Proxy p => Proxy (WriterP w p) | |
Proxy p => MFunctor (WriterP w p a' a b' b) | |
Proxy p => MonadTrans (WriterP w p a' a b' b) | |
(Monad m, Proxy p) => Monad (WriterP w p a' a b' b m) | |
(Monad m, Proxy p) => Functor (WriterP w p a' a b' b m) | |
(Monad m, MonadPlusP p) => MonadPlus (WriterP w p a' a b' b m) | |
(Monad m, Proxy p) => Applicative (WriterP w p a' a b' b m) | |
(Monad m, MonadPlusP p) => Alternative (WriterP w p a' a b' b m) | |
(MonadIO m, Proxy p) => MonadIO (WriterP w p a' a b' b m) |
writer :: (Monad m, Proxy p, Monoid w) => (r, w) -> WriterP w p a' a b' b m rSource
Convert a Writer to a WriterP
writerT :: (Monad m, Proxy p, Monoid w) => m (r, w) -> WriterP w p a' a b' b m rSource
Convert a WriterT to a WriterP
writerP :: (Monad m, Proxy p, Monoid w) => p a' a b' b m (r, w) -> WriterP w p a' a b' b m rSource
Create a WriterP
from a proxy that generates a result and a monoid
runWriterP :: (Monad m, Proxy p, Monoid w) => WriterP w p a' a b' b m r -> p a' a b' b m (r, w)Source
Run a WriterP
computation, producing the final result and monoid
runWriterK :: (Monad m, Proxy p, Monoid w) => (q -> WriterP w p a' a b' b m r) -> q -> p a' a b' b m (r, w)Source
Run a WriterP
'K
'leisli arrow, producing the final result and monoid
execWriterP :: (Monad m, Proxy p, Monoid w) => WriterP w p a' a b' b m r -> p a' a b' b m wSource
Evaluate a WriterP
computation, but discard the final result
execWriterK :: (Monad m, Proxy p, Monoid w) => (q -> WriterP w p a' a b' b m r) -> q -> p a' a b' b m wSource
Evaluate a WriterP
'K
'leisli arrow, but discard the final result