freer-0.2.4.1: Implementation of the Freer Monad

Safe HaskellSafe
LanguageHaskell2010

Data.Open.Union.Internal

Documentation

data Union r v where #

Constructors

UNow :: t v -> Union (t ': r) v 
UNext :: Union (t ': r) v -> Union (any ': (t ': r)) v 

Instances

(Functor f1, Functor (Union ((:) (* -> *) f2 fs))) => Functor (Union ((:) (* -> *) f1 ((:) (* -> *) f2 fs))) # 

Methods

fmap :: (a -> b) -> Union (((* -> *) ': f1) (((* -> *) ': f2) fs)) a -> Union (((* -> *) ': f1) (((* -> *) ': f2) fs)) b #

(<$) :: a -> Union (((* -> *) ': f1) (((* -> *) ': f2) fs)) b -> Union (((* -> *) ': f1) (((* -> *) ': f2) fs)) a #

Functor f => Functor (Union ((:) (* -> *) f ([] (* -> *)))) # 

Methods

fmap :: (a -> b) -> Union (((* -> *) ': f) [* -> *]) a -> Union (((* -> *) ': f) [* -> *]) b #

(<$) :: a -> Union (((* -> *) ': f) [* -> *]) b -> Union (((* -> *) ': f) [* -> *]) a #

data Nat #

Constructors

S Nat 
Z 

data P n #

Constructors

P 

class Member' t r n where #

Minimal complete definition

inj', prj'

Methods

inj' :: P n -> t v -> Union r v #

prj' :: P n -> Union r v -> Maybe (t v) #

Instances

(~) [* -> *] r ((:) (* -> *) t r') => Member' t r Z # 

Methods

inj' :: P Z -> t v -> Union r v #

prj' :: P Z -> Union r v -> Maybe (t v) #

((~) [* -> *] r ((:) (* -> *) t' ((:) (* -> *) r' rs')), Member' t ((:) (* -> *) r' rs') n) => Member' t r (S n) # 

Methods

inj' :: P (S n) -> t v -> Union r v #

prj' :: P (S n) -> Union r v -> Maybe (t v) #

type family FindElem (t :: * -> *) r :: Nat where ... #

Equations

FindElem t (t ': r) = Z 
FindElem t (any ': r) = S (FindElem t r) 

type family EQU (a :: k) (b :: k) :: Bool where ... #

Equations

EQU a a = True 
EQU a b = False 

decomp :: Union (t ': r) v -> Either (Union r v) (t v) #

weaken :: Union (t ': r) w -> Union (any ': (t ': r)) w #

extract :: Union '[t] v -> t v #

class Member' t r (FindElem t r) => Member t r where #

Minimal complete definition

inj, prj

Methods

inj :: t v -> Union r v #

prj :: Union r v -> Maybe (t v) #

Instances

Member' t r (FindElem t r) => Member t r # 

Methods

inj :: t v -> Union r v #

prj :: Union r v -> Maybe (t v) #