Files
gf-core/transfer/examples/nat.tr

23 lines
424 B
Plaintext

data Nat : Type where
Zero : Nat
Succ : (n:Nat) -> Nat
plus : Nat -> Nat -> Nat
plus Zero y = y
plus (Succ x) y = Succ (plus x y)
pred : Nat -> Nat
pred Zero = Zero
pred (Succ n) = n
natToInt : Nat -> Int
natToInt Zero = 0
natToInt (Succ n) = 1 + natToInt n
plus : Nat -> Nat -> Nat
plus Zero y = y
plus (Succ x) y = Succ (plus x y)
intToNat : Int -> Nat
intToNat n = if n == 0 then Zero else Succ (intToNat (n-1))