pipes-3.1.0: Compositional pipelines

Safe HaskellSafe
LanguageHaskell98

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

newtype WriterP w p a' a b' b m r Source #

The strict Writer proxy transformer

Constructors

WriterP 

Fields

Instances

ProxyTrans (WriterP w) Source # 

Methods

liftP :: (Monad m, Proxy p) => p a' a b' b m r -> WriterP w p a' a b' b m r Source #

PFunctor (WriterP w) Source # 

Methods

hoistP :: (Monad m, Proxy p1) => (forall r1. p1 a' a b' b m r1 -> p2 a' a b' b n r1) -> WriterP w p1 a' a b' b m r2 -> WriterP w p2 a' a b' b n r2 Source #

MonadIOP p => MonadIOP (WriterP w p) Source # 

Methods

liftIO_P :: MonadIO m => IO r -> WriterP w p a' a b' b m r Source #

MonadPlusP p => MonadPlusP (WriterP w p) Source # 

Methods

mzero_P :: Monad m => WriterP w p a' a b' b m r Source #

mplus_P :: Monad m => WriterP w p a' a b' b m r -> WriterP w p a' a b' b m r -> WriterP w p a' a b' b m r Source #

Proxy p => Proxy (WriterP w p) Source # 

Methods

request :: Monad m => a' -> WriterP w p a' a b' b m a Source #

respond :: Monad m => b -> WriterP w p a' a b' b m b' Source #

(>->) :: Monad m => (b' -> WriterP w p a' a b' b m r) -> (c' -> WriterP w p b' b c' c m r) -> c' -> WriterP w p a' a c' c m r Source #

(>~>) :: Monad m => (a -> WriterP w p a' a b' b m r) -> (b -> WriterP w p b' b c' c m r) -> a -> WriterP w p a' a c' c m r Source #

return_P :: Monad m => r -> WriterP w p a' a b' b m r Source #

(?>=) :: Monad m => WriterP w p a' a b' b m r -> (r -> WriterP w p a' a b' b m r') -> WriterP w p a' a b' b m r' Source #

lift_P :: Monad m => m r -> WriterP w p a' a b' b m r Source #

hoist_P :: Monad m => (forall r. m r -> n r) -> WriterP w p a' a b' b m r' -> WriterP w p a' a b' b n r' Source #

Proxy p => MonadTrans (WriterP w p a' a b' b) Source # 

Methods

lift :: Monad m => m a -> WriterP w p a' a b' b m a #

Proxy p => MFunctor (WriterP w p a' a b' b) Source # 

Methods

hoist :: Monad m => (forall c. m c -> n c) -> WriterP w p a' a b' b m b -> WriterP w p a' a b' b n b Source #

(Proxy p, Monad m) => Monad (WriterP w p a' a b' b m) Source # 

Methods

(>>=) :: WriterP w p a' a b' b m a -> (a -> WriterP w p a' a b' b m b) -> WriterP w p a' a b' b m b #

(>>) :: WriterP w p a' a b' b m a -> WriterP w p a' a b' b m b -> WriterP w p a' a b' b m b #

return :: a -> WriterP w p a' a b' b m a #

fail :: String -> WriterP w p a' a b' b m a #

(Proxy p, Monad m) => Functor (WriterP w p a' a b' b m) Source # 

Methods

fmap :: (a -> b) -> WriterP w p a' a b' b m a -> WriterP w p a' a b' b m b #

(<$) :: a -> WriterP w p a' a b' b m b -> WriterP w p a' a b' b m a #

(Proxy p, Monad m) => Applicative (WriterP w p a' a b' b m) Source # 

Methods

pure :: a -> WriterP w p a' a b' b m a #

(<*>) :: WriterP w p a' a b' b m (a -> b) -> WriterP w p a' a b' b m a -> WriterP w p a' a b' b m b #

(*>) :: WriterP w p a' a b' b m a -> WriterP w p a' a b' b m b -> WriterP w p a' a b' b m b #

(<*) :: WriterP w p a' a b' b m a -> WriterP w p a' a b' b m b -> WriterP w p a' a b' b m a #

(MonadIOP p, MonadIO m) => MonadIO (WriterP w p a' a b' b m) Source # 

Methods

liftIO :: IO a -> WriterP w p a' a b' b m a #

(MonadPlusP p, Monad m) => Alternative (WriterP w p a' a b' b m) Source # 

Methods

empty :: WriterP w p a' a b' b m a #

(<|>) :: WriterP w p a' a b' b m a -> WriterP w p a' a b' b m a -> WriterP w p a' a b' b m a #

some :: WriterP w p a' a b' b m a -> WriterP w p a' a b' b m [a] #

many :: WriterP w p a' a b' b m a -> WriterP w p a' a b' b m [a] #

(MonadPlusP p, Monad m) => MonadPlus (WriterP w p a' a b' b m) Source # 

Methods

mzero :: WriterP w p a' a b' b m a #

mplus :: WriterP w p a' a b' b m a -> WriterP w p a' a b' b m a -> WriterP w p a' a b' b m a #

runWriterP :: 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 :: 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 :: (Proxy p, Monad m, Monoid w) => WriterP w p a' a b' b m r -> p a' a b' b m w Source #

Evaluate a WriterP computation, but discard the final result

execWriterK :: (Proxy p, Monad m, Monoid w) => (q -> WriterP w p a' a b' b m r) -> q -> p a' a b' b m w Source #

Evaluate a WriterP 'K'leisli arrow, but discard the final result

Writer operations

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

Add a value to the monoid

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

Modify the result of a writer computation