freer-par-monad-0.1.0.0: Freer par monad
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Monad.Freer.Par

Synopsis

Freer

Type

data Freer s sq (f :: (* -> *) -> * -> * -> *) t a Source #

Instances

Instances details
(Sequence sq, Funable f) => Applicative (Freer s sq f t) Source # 
Instance details

Defined in Control.Monad.Freer.Par

Methods

pure :: a -> Freer s sq f t a #

(<*>) :: Freer s sq f t (a -> b) -> Freer s sq f t a -> Freer s sq f t b #

liftA2 :: (a -> b -> c) -> Freer s sq f t a -> Freer s sq f t b -> Freer s sq f t c #

(*>) :: Freer s sq f t a -> Freer s sq f t b -> Freer s sq f t b #

(<*) :: Freer s sq f t a -> Freer s sq f t b -> Freer s sq f t a #

(Sequence sq, Funable f) => Functor (Freer s sq f t) Source # 
Instance details

Defined in Control.Monad.Freer.Par

Methods

fmap :: (a -> b) -> Freer s sq f t a -> Freer s sq f t b #

(<$) :: a -> Freer s sq f t b -> Freer s sq f t a #

(Sequence sq, Funable f) => Monad (Freer s sq f t) Source # 
Instance details

Defined in Control.Monad.Freer.Par

Methods

(>>=) :: Freer s sq f t a -> (a -> Freer s sq f t b) -> Freer s sq f t b #

(>>) :: Freer s sq f t a -> Freer s sq f t b -> Freer s sq f t b #

return :: a -> Freer s sq f t a #

data Fun s sq f t a b Source #

Pattern

pattern Pure :: a -> Freer s sq f t a Source #

pattern (:>>=) :: t x -> Fun s sq f t x a -> Freer s sq f t a Source #

pattern (:=<<) :: Fun s sq f t x a -> t x -> Freer s sq f t a Source #

Bind

(>>>=) :: (Sequence sq, Funable f) => t a -> (a -> Freer s sq f t b) -> Freer s sq f t b infixl 7 Source #

(=<<<) :: (Sequence sq, Funable f) => (a -> Freer s sq f t b) -> t a -> Freer s sq f t b infixr 7 Source #

Apply

app :: (Sequence sq, Funable f) => Fun s sq f t a b -> a -> Freer s sq f t b Source #

appPar :: (Sequence sq, Funable f, Taggable f) => Fun s sq f t a b -> Fun s sq f t a b -> a -> (Freer s sq f t b, Freer s sq f t b) Source #

Tagged

data Tagged s a Source #

Instances

Instances details
Applicative (Tagged s) Source # 
Instance details

Defined in Control.Monad.Freer.Par

Methods

pure :: a -> Tagged s a #

(<*>) :: Tagged s (a -> b) -> Tagged s a -> Tagged s b #

liftA2 :: (a -> b -> c) -> Tagged s a -> Tagged s b -> Tagged s c #

(*>) :: Tagged s a -> Tagged s b -> Tagged s b #

(<*) :: Tagged s a -> Tagged s b -> Tagged s a #

Functor (Tagged s) Source # 
Instance details

Defined in Control.Monad.Freer.Par

Methods

fmap :: (a -> b) -> Tagged s a -> Tagged s b #

(<$) :: a -> Tagged s b -> Tagged s a #

Monad (Tagged s) Source # 
Instance details

Defined in Control.Monad.Freer.Par

Methods

(>>=) :: Tagged s a -> (a -> Tagged s b) -> Tagged s b #

(>>) :: Tagged s a -> Tagged s b -> Tagged s b #

return :: a -> Tagged s a #

runTagged :: (forall s. Tagged s a) -> a Source #

tag :: (Sequence sq, Funable f, Taggable f) => Freer s sq f t a -> Tagged s (Freer s sq f t a) Source #