freer-0.2.4.1: Implementation of the Freer Monad

Safe HaskellSafe
LanguageHaskell2010

Data.Open.Union.Internal

Documentation

data Union r v where Source #

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))) Source # 

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 ([] (* -> *)))) Source # 

Methods

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

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

data Nat Source #

Constructors

S Nat 
Z 

data P n Source #

Constructors

P 

class Member' t r n where Source #

Minimal complete definition

inj', prj'

Methods

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

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

Instances

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

Methods

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

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

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

Methods

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

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

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

Equations

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

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

Equations

EQU a a = True 
EQU a b = False 

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

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

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

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

Minimal complete definition

inj, prj

Methods

inj :: t v -> Union r v Source #

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

Instances

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

Methods

inj :: t v -> Union r v Source #

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