caledon-0.0.0.0: prelude.ncc
defn num : atom
as zero = num
| succ = num → num
defn add : num → num → num → atom
as add_z = {N} add zero N N
| add_s = {N}{M}{R} add N M R → add (succ N) M (succ R)
defn sub : num → num → num → atom
as sub_with_add : {N}{M}{R} sub N M R ← add N R M
defn maybe : atom → atom
as nothing = {a} maybe a
| just = {a} a → maybe a
defn list : atom → atom
as nil = {a} nil a
| cons = {a} a → list a → list a