diff options
| author | bringert <bringert@cs.chalmers.se> | 2005-11-30 17:40:32 +0000 |
|---|---|---|
| committer | bringert <bringert@cs.chalmers.se> | 2005-11-30 17:40:32 +0000 |
| commit | a68cd282cb83d8ace42baffe0b0d3a00f3455920 (patch) | |
| tree | c73296337b84652ac3fe5e1cb4ddece681402729 /transfer/lib/nat.tr | |
| parent | 94b99219b8a438c4f29f68a0c19ee86caa608904 (diff) | |
Transfer: reimplement operators with type classes.
Diffstat (limited to 'transfer/lib/nat.tr')
| -rw-r--r-- | transfer/lib/nat.tr | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/transfer/lib/nat.tr b/transfer/lib/nat.tr index c529e5238..b13a809ed 100644 --- a/transfer/lib/nat.tr +++ b/transfer/lib/nat.tr @@ -1,18 +1,24 @@ +import prelude + 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) +add_Nat : Add Nat +add_Nat = rec zero = Zero + plus = natPlus + +natPlus : Nat -> Nat -> Nat +natPlus Zero y = y +natPlus (Succ x) y = Succ (natPlus x y) pred : Nat -> Nat pred Zero = Zero pred (Succ n) = n -natToInt : Nat -> Int +natToInt : Nat -> Integer natToInt Zero = 0 natToInt (Succ n) = 1 + natToInt n -intToNat : Int -> Nat +intToNat : Integer -> Nat intToNat n = if n == 0 then Zero else Succ (intToNat (n-1)) |
