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

Ian Lynagh igloo at earth.li
Mon Dec 4 12:21:15 EST 2006

On Wed, Nov 29, 2006 at 06:14:56PM +0000, Conor McBride wrote:
> 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;

> I'm wondering what the story is. I mean, is there some nasty 
> problem lurking here which prevents the lifting of this peculiar 
> restriction?

I don't know either, but this sounds like a good thing to bring up for
Haskell' if no-one has already.


More information about the Haskell-Cafe mailing list