7 :: Ar3 a b c :== (a -> b -> c)
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
13 class plus a b | succ a b :: a b
14 instance plus Zero a a
17 instance plus (Succ a) b c | plus a (Succ b) c
19 plus (Succ a) b = plus a (Succ b)