-data Either a b = Left a | Right b\r
-\r
-data List a = Nil | Cons a (List a)\r
-\r
-data Nat = Zero | Succ Nat\r
-\r
-sum Zero a = a\r
-sum a Zero = a\r
-sum (Succ a) (Succ b) = Succ (Succ (sum a b))\r
-\r
-sum_append xs ys\r
- = go Zero (Left xs)\r
- where\r
- go z (Left xs)\r
- = match xs with\r
- Nil -> go z (Right ys)\r
- Cons x xs' -> go (sum x z) (Left xs')\r
- go z (Right ys)\r
- = match ys with\r
- Nil -> z\r
- Cons y ys' -> go (sum y z) (Right ys')\r
-\r
-main = "Hello world!"\r
---\r
+data Either a b = Left a | Right b
+
+data List a = Nil | Cons a (List a)
+
+data Nat = Zero | Succ Nat
+
+sum Zero a = a
+sum a Zero = a
+sum (Succ a) (Succ b) = Succ (Succ (sum a b))
+
+sum_append xs ys
+ = go Zero (Left xs)
+ where
+ go z (Left xs)
+ = match xs with
+ Nil -> go z (Right ys)
+ Cons x xs' -> go (sum x z) (Left xs')
+ go z (Right ys)
+ = match ys with
+ Nil -> z
+ Cons y ys' -> go (sum y z) (Right ys')
+
+main = "Hello world!"
+--