Monatron-0.3.1: Monad transformer library with uniform liftings

Control.Monatron.Open

Documentation

data (f :+: g) a Source

Constructors

Inl (f a) 
Inr (g a) 

Instances

(Functor g, Functor h, Functor f, f :<: g) => f :<: (:+: h g) 
(Functor g, Functor f) => f :<: (:+: f g) 
(Functor f, Functor g) => Functor (:+: f g) 

newtype Fix f Source

Constructors

In 

Fields

out :: f (Fix f)
 

type Open e f r = (e -> r) -> f e -> rSource

(<@>) :: Open e f r -> Open e g r -> Open e (f :+: g) rSource

fix :: Open (Fix f) f r -> Fix f -> rSource

class f :<: g whereSource

Methods

inj :: f a -> g aSource

Instances

Functor f => f :<: f 
(Functor g, Functor h, Functor f, f :<: g) => f :<: (:+: h g) 
(Functor g, Functor f) => f :<: (:+: f g) 

inject :: f :<: g => f (Fix g) -> Fix gSource

foldFix :: Functor f => (f a -> a) -> Fix f -> aSource