pipes-3.0.0: Compositional pipelines

Safe HaskellSafe
LanguageHaskell98

Control.Proxy.Trans.Either

Contents

Description

This module provides the proxy transformer equivalent of EitherT.

Synopsis

EitherP

newtype EitherP e p a' a b' b m r Source #

The Either proxy transformer

Constructors

EitherP 

Fields

Instances

ProxyTrans (EitherP e) Source # 

Methods

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

PFunctor (EitherP e) Source # 

Methods

hoistP :: (Monad m, Proxy p) => (forall a' a b' b r1. p a' a b' b m r1 -> q a' a b' b m r1) -> EitherP e p a' a b' b m r2 -> EitherP e q a' a b' b m r2 Source #

MonadIOP p => MonadIOP (EitherP e p) Source # 

Methods

liftIO_P :: MonadIO m => IO r -> EitherP e p a' a b' b m r Source #

MonadPlusP p => MonadPlusP (EitherP e p) Source # 

Methods

mzero_P :: Monad m => EitherP e p a' a b' b m r Source #

mplus_P :: Monad m => EitherP e p a' a b' b m r -> EitherP e p a' a b' b m r -> EitherP e p a' a b' b m r Source #

Proxy p => Proxy (EitherP e p) Source # 

Methods

request :: Monad m => a' -> EitherP e p a' a b' b m a Source #

respond :: Monad m => b -> EitherP e p a' a b' b m b' Source #

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

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

return_P :: Monad m => r -> EitherP e p a' a b' b m r Source #

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

lift_P :: Monad m => m r -> EitherP e p a' a b' b m r Source #

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

Proxy p => MonadTrans (EitherP e p a' a b' b) Source # 

Methods

lift :: Monad m => m a -> EitherP e p a' a b' b m a #

Proxy p => MFunctor (EitherP e p a' a b' b) Source # 

Methods

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

(Proxy p, Monad m) => Monad (EitherP e p a' a b' b m) Source # 

Methods

(>>=) :: EitherP e p a' a b' b m a -> (a -> EitherP e p a' a b' b m b) -> EitherP e p a' a b' b m b #

(>>) :: EitherP e p a' a b' b m a -> EitherP e p a' a b' b m b -> EitherP e p a' a b' b m b #

return :: a -> EitherP e p a' a b' b m a #

fail :: String -> EitherP e p a' a b' b m a #

(Proxy p, Monad m) => Functor (EitherP e p a' a b' b m) Source # 

Methods

fmap :: (a -> b) -> EitherP e p a' a b' b m a -> EitherP e p a' a b' b m b #

(<$) :: a -> EitherP e p a' a b' b m b -> EitherP e p a' a b' b m a #

(Proxy p, Monad m) => Applicative (EitherP e p a' a b' b m) Source # 

Methods

pure :: a -> EitherP e p a' a b' b m a #

(<*>) :: EitherP e p a' a b' b m (a -> b) -> EitherP e p a' a b' b m a -> EitherP e p a' a b' b m b #

(*>) :: EitherP e p a' a b' b m a -> EitherP e p a' a b' b m b -> EitherP e p a' a b' b m b #

(<*) :: EitherP e p a' a b' b m a -> EitherP e p a' a b' b m b -> EitherP e p a' a b' b m a #

(MonadIOP p, MonadIO m) => MonadIO (EitherP e p a' a b' b m) Source # 

Methods

liftIO :: IO a -> EitherP e p a' a b' b m a #

(MonadPlusP p, Monad m) => Alternative (EitherP e p a' a b' b m) Source # 

Methods

empty :: EitherP e p a' a b' b m a #

(<|>) :: EitherP e p a' a b' b m a -> EitherP e p a' a b' b m a -> EitherP e p a' a b' b m a #

some :: EitherP e p a' a b' b m a -> EitherP e p a' a b' b m [a] #

many :: EitherP e p a' a b' b m a -> EitherP e p a' a b' b m [a] #

(MonadPlusP p, Monad m) => MonadPlus (EitherP e p a' a b' b m) Source # 

Methods

mzero :: EitherP e p a' a b' b m a #

mplus :: EitherP e p a' a b' b m a -> EitherP e p a' a b' b m a -> EitherP e p a' a b' b m a #

runEitherK :: (q -> EitherP e p a' a b' b m r) -> q -> p a' a b' b m (Either e r) Source #

Run an EitherP 'K'leisi arrow, returning either a Left or Right

Either operations

left :: (Monad m, Proxy p) => e -> EitherP e p a' a b' b m r Source #

Abort the computation and return a Left result

right :: (Monad m, Proxy p) => r -> EitherP e p a' a b' b m r Source #

Synonym for return

Symmetric monad

EitherP forms a second symmetric monad over the left type variable.

throw is symmetric to return

catch is symmetric to (>>=)

These two functions obey the monad laws:

catch m throw = m

catch (throw e) f = f e

catch (catch m f) g = catch m (\e -> catch (f e) g)

throw :: (Monad m, Proxy p) => e -> EitherP e p a' a b' b m r Source #

Synonym for left

catch Source #

Arguments

:: (Monad m, Proxy p) 
=> EitherP e p a' a b' b m r

Original computation

-> (e -> EitherP f p a' a b' b m r)

Handler

-> EitherP f p a' a b' b m r

Handled computation

Resume from an aborted operation

handle Source #

Arguments

:: (Monad m, Proxy p) 
=> (e -> EitherP f p a' a b' b m r)

Handler

-> EitherP e p a' a b' b m r

Original computation

-> EitherP f p a' a b' b m r

Handled computation

catch with the arguments flipped