effin-0.1.1.0: A Typeable-free implementation of extensible effects

Safe HaskellNone
LanguageHaskell2010

Control.Effect.Union

Synopsis

Documentation

type EffectUnion es fs = (KnownList es, Member (Union es) fs, es ~ UnionType fs) Source

data Union es a Source

Represents a union of the list of type constructors in es parameterized by a. As an effect, it represents the union of each type constructor's corresponding effect.

Instances

Functor (Union es) 

runUnion :: KnownList es => Effect (Union es : fs) a -> Effect (es ++ fs) a Source

Flattens a nested list of effects.

nest :: EffectUnion es fs => Effect es a -> Effect fs a Source

Nests an effect with another.

class KnownList es Source

A 'known list' is a type level list who's size is known at compile time.

Minimal complete definition

size

Instances

KnownList ([] (* -> *)) 
KnownList es => KnownList ((:) (* -> *) e es) 

type family es ++ fs :: [* -> *] Source

Type level list append.

Equations

[] ++ fs = fs 
(e : es) ++ fs = e : (es ++ fs)