fx-0.7: Horizontally composable effects

Safe HaskellNone
LanguageHaskell2010

Fx.EitherEffect

Synopsis

Documentation

data EitherEffect effect1 effect2 context result Source #

A sum of two effects (effect1 and effect2) to be executed in context producing result.

Instances

MonadTrans (EitherEffect effect1 effect2) Source # 

Methods

lift :: Monad m => m a -> EitherEffect effect1 effect2 m a #

Monad context => Monad (EitherEffect effect1 effect2 context) Source # 

Methods

(>>=) :: EitherEffect effect1 effect2 context a -> (a -> EitherEffect effect1 effect2 context b) -> EitherEffect effect1 effect2 context b #

(>>) :: EitherEffect effect1 effect2 context a -> EitherEffect effect1 effect2 context b -> EitherEffect effect1 effect2 context b #

return :: a -> EitherEffect effect1 effect2 context a #

fail :: String -> EitherEffect effect1 effect2 context a #

Functor context => Functor (EitherEffect effect1 effect2 context) Source # 

Methods

fmap :: (a -> b) -> EitherEffect effect1 effect2 context a -> EitherEffect effect1 effect2 context b #

(<$) :: a -> EitherEffect effect1 effect2 context b -> EitherEffect effect1 effect2 context a #

Applicative context => Applicative (EitherEffect effect1 effect2 context) Source # 

Methods

pure :: a -> EitherEffect effect1 effect2 context a #

(<*>) :: EitherEffect effect1 effect2 context (a -> b) -> EitherEffect effect1 effect2 context a -> EitherEffect effect1 effect2 context b #

(*>) :: EitherEffect effect1 effect2 context a -> EitherEffect effect1 effect2 context b -> EitherEffect effect1 effect2 context b #

(<*) :: EitherEffect effect1 effect2 context a -> EitherEffect effect1 effect2 context b -> EitherEffect effect1 effect2 context a #

MonadIO context => MonadIO (EitherEffect effect1 effect2 context) Source # 

Methods

liftIO :: IO a -> EitherEffect effect1 effect2 context a #

Alternative context => Alternative (EitherEffect effect1 effect2 context) Source # 

Methods

empty :: EitherEffect effect1 effect2 context a #

(<|>) :: EitherEffect effect1 effect2 context a -> EitherEffect effect1 effect2 context a -> EitherEffect effect1 effect2 context a #

some :: EitherEffect effect1 effect2 context a -> EitherEffect effect1 effect2 context [a] #

many :: EitherEffect effect1 effect2 context a -> EitherEffect effect1 effect2 context [a] #

MonadPlus context => MonadPlus (EitherEffect effect1 effect2 context) Source # 

Methods

mzero :: EitherEffect effect1 effect2 context a #

mplus :: EitherEffect effect1 effect2 context a -> EitherEffect effect1 effect2 context a -> EitherEffect effect1 effect2 context a #

liftEffect1 :: effect1 result -> EitherEffect effect1 effect2 context result Source #

Lift the first of the two effects.

liftEffect2 :: effect2 result -> EitherEffect effect1 effect2 context result Source #

Lift the second of the two effects.

executor :: Executor effect1 context -> Executor effect2 context -> Executor (EitherEffect effect1 effect2 context) context Source #

Compose the executors of each effect into an executor of either.