+++ /dev/null
-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)