pipes-3.3.0: Compositional pipelines

Safe HaskellSafe-Inferred

Control.Proxy.Trans.Writer

Contents

Description

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.

Synopsis

WriterP

data WriterP w p a' a b' b m r Source

The strict Writer proxy transformer

Instances

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

Writer operations

tell :: (Monad m, Proxy p, Monoid w) => w -> WriterP w p a' a b' b m ()Source

Add a value to the monoid

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 rSource

Modify the result of a writer computation