-
[clean-tests.git] / old / funcdeps / test.icl
1 module test
2
3 import StdEnv
4
5 :: Zero = Zero
6 :: Succ a = Succ a
7 :: Ar3 a b c :== (a -> b -> c)
8
9 class succ a ~b :: a -> b
10 instance succ Zero (Succ Zero) where succ Zero = Succ Zero
11 instance succ a (Succ a) where succ a = Succ a
12
13 class plus a b | succ a b :: a b
14 instance plus Zero a a
15 where
16 plus a b = b
17 instance plus (Succ a) b c | plus a (Succ b) c
18 where
19 plus (Succ a) b = plus a (Succ b)
20
21 Start :: Int
22 Start = 42
23
24 class fmap t :: (a -> b) (t a) -> t b
25
26 instance fmap ((,)a) where fmap f (a, b) = (a, f b)
27
28 Start = fmap inc (42, 37)