X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FilxGen%2Ftests%2Ftest4.hs;fp=ghc%2Fcompiler%2FilxGen%2Ftests%2Ftest4.hs;h=080c6521e3c85bae98959d27567a2d3a22f7cd85;hb=81027250abf0099f1dbaef1ddb8534547268ad41;hp=0000000000000000000000000000000000000000;hpb=44637383d831bd3ca8f3aa3cf80e6a0c90986b41;p=ghc-hetmet.git diff --git a/ghc/compiler/ilxGen/tests/test4.hs b/ghc/compiler/ilxGen/tests/test4.hs new file mode 100644 index 0000000..080c652 --- /dev/null +++ b/ghc/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)