11
Datatype : Data -> List (List Data)
12
Datatype nat = ε ◄ ε ◄ (ε ◄ nat)
13
Datatype bool = ε ◄ ε ◄ ε
15
data Effect : Set where
17
data _⊆_ : Effect -> Effect -> Set where
18
refl⊆ : forall {M} -> M ⊆ M
20
Monad : Effect -> Set -> Set
23
return : forall {M A} -> A -> Monad M A
26
map : forall {M A B} -> (A -> B) -> Monad M A -> Monad M B
29
join : forall {M A} -> Monad M (Monad M A) -> Monad M A
32
morph : forall {M N} -> M ⊆ N -> (A : Set) -> Monad M A -> Monad N A
39
(\{M A} -> return {M}{A})
40
(\{M A B} -> map {M}{A}{B})
41
(\{M A} -> join {M}{A})
44
zero : forall {M Γ} -> InV M Γ (TyCon nat)
47
suc : forall {M Γ} -> InV M Γ (TyCon nat) -> InV M Γ (TyCon nat)
48
suc n = con hd (⟨⟩ ◃ n)
50
true : forall {M Γ} -> InV M Γ (TyCon bool)
53
false : forall {M Γ} -> InV M Γ (TyCon bool)
54
false = con (tl hd) ⟨⟩