Reorganisation of the source tree
[ghc-hetmet.git] / compiler / ilxGen / tests / test4.hs
diff --git a/compiler/ilxGen/tests/test4.hs b/compiler/ilxGen/tests/test4.hs
new file mode 100644 (file)
index 0000000..080c652
--- /dev/null
@@ -0,0 +1,47 @@
+class  Eqq a  where
+    evenN :: a -> Bool
+    oddN       :: a -> Bool
+    evenN x            =  False
+    oddN x             =  True
+
+
+data N = Z | S N
+
+instance Eqq N 
+  where
+   evenN Z = True
+   evenN (S x) = oddN x
+   oddN Z = False
+   oddN (S x) = evenN x
+
+choose x = if evenN x then "hello world (evenN)\n" else if oddN x then "hello world (oddN)\n" else "no!\n"
+
+add n m = 
+   case n of
+       Z -> m  
+       S nn -> S (add nn m)
+
+mul n m = 
+   case n of
+       Z -> Z
+       S nn -> add m (mul nn m)
+
+pow n m = 
+   case m of
+       Z -> S Z
+       S mm -> mul n (pow n mm)
+
+n1 = S Z
+n2 = add n1 n1
+n4 = add n2 n2
+n6 = add n2 n4
+n8 = add n2 n6
+n10 = add n2 n8
+n16 = add n6 n10
+n18 = add n8 n10
+n20 = add n4 n16
+
+bign = pow n2 n16
+bign1 = add bign n1
+
+main = putStr (choose bign1)