
Compilation, with ghc 5.02, of the following program: data Zero = Zero deriving Show data Succ a = Succ a deriving Show -- Compilations succeeds with the following line uncommented. -- t :: Succ Zero -- <============================= t = Zero `p` (Succ Zero) class P a b c | a b -> c where p :: a -> b -> c instance P Zero a a where p Zero a = a instance P a b c => P b a c where p b a = p a b main = putStrLn $ "Hello." succeeds with the indicated line uncommented. With it commented-out, the compilation fails with: Flip.hs:6: Context reduction stack overflow; size = 21 Use -fcontext-stack20 to increase stack size to (e.g.) 20 `P (Succ Zero) Zero c' arising from use of `p' at Flip.hs:6 `P Zero (Succ Zero) c' arising from use of `p' at Flip.hs:6 `P (Succ Zero) Zero c' arising from use of `p' at Flip.hs:6 `P Zero (Succ Zero) c' arising from use of `p' at Flip.hs:6 ... `P (Succ Zero) Zero c' arising from use of `p' at Flip.hs:6 `P Zero (Succ Zero) c' arising from use of `p' at Flip.hs:6 `p at [Zero Succ Zero c]' arising from use of `p' at Flip.hs:6 When generalising the type(s) for t . Why? thanks, mike gunter
participants (1)
-
Mike Gunter