[Haskell-cafe] known, I know: class contexts and mutual recursion

Simon Peyton-Jones simonpj at microsoft.com
Fri Dec 8 10:48:49 EST 2006


| > Mmm.lhs:15:1:
| >   Contexts differ in length
| >   When matching the contexts of the signatures for
| >     foo :: forall (m :: * -> *). (Monad m) => Thing -> m Int
| >     goo :: Thing -> (Maybe Int -> Int) -> Int
| >   The signature contexts in a mutually recursive group should all be
| > identical
| >
| > Poking about on the web, I got the impression that this was a known
| > infelicity in ghc 6.4 (which I'm using), due to be ironed out. However,
| > an early-adopting colleague with 6.6 alleges that foo-goo is still
| > poisonous.
|
| You can compile it with 6.6 if you use -fglasgow-exts. It's not clear to
| me whether this will always work, e.g. if you have higher rank types
| floating around, but if it does then we should add a hint to the error;
| Simon?

Yes, it'll work in 6.6, and it's even documented (at the end of the section on type-system extensions).  I'll add a suggestion to the error message to use -fglasgow-exts

Simon



More information about the Haskell-Cafe mailing list