
31 May
2009
31 May
'09
5:44 a.m.
----------------------------------------------- class A a where foo :: a b
class B a
class (A a, B a) => C a -----------------------------------------------
GHC compiles it without errors, but Hugs rejects it: "Illegal type in class constraint".
The error message is horribly uninformative.
What is the correct behavior, and which part of the haskell 98 report explains this?
4.6 Kind Inference, combined with 4.5(.1) dependency analysis. My interpretation: 'A' and 'B' are not in the same dependency group, so 'a's kind in 'B' defaults to '*', so 'C' is ill-kinded. Try moving 'B' into a separate module to get the same effect in GHC (which, in the single-module case, uses 'A' and 'C' to determine the kind of 'B's 'a'). Claus