Files
newt/tests/Zoo2eg.newt

39 lines
618 B
Agda

module Zoo2eg
id : (A : U) -> A -> A
id = \ A x => x
const : (A B : U) -> A -> B -> A
const = \A B x y => x
Nat : U
Nat = (N : U) -> (N -> N) -> N -> N
zero : Nat
zero = \ _ s z => z
succ : Nat -> Nat
succ = \ n ty s z => s (n ty s z)
-- need Nat to reduce (and syntax highlighting)
five : Nat
five = \ N s z => s (s (s (s (s z))))
add : Nat -> Nat -> Nat
add = \a b N s z => a N s (b N s z)
mul : Nat -> Nat -> Nat
mul = \a b N s z => a N (b N s) z
ten : Nat
ten = add five five
hundred : Nat
hundred = mul ten ten
thousand : Nat
thousand = mul ten hundred
-- and then nf / eval of hundred
-- #nf hundred