summaryrefslogtreecommitdiff
path: root/compiler/ilxGen/tests/test4.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/ilxGen/tests/test4.hs')
-rw-r--r--compiler/ilxGen/tests/test4.hs47
1 files changed, 47 insertions, 0 deletions
diff --git a/compiler/ilxGen/tests/test4.hs b/compiler/ilxGen/tests/test4.hs
new file mode 100644
index 0000000000..080c6521e3
--- /dev/null
+++ b/compiler/ilxGen/tests/test4.hs
@@ -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)