> I decided to try and get my old multi-param. parser to work,
> and got told-off by Haskell's parser:
> 
> Please tell me what I am doing wrong.  The following program:
> 
> > module A where
> >  
> > class (Monad m, Monad (t m)) => AMonadT t m where
> >   lift :: m a -> t m a
> 
> Gives me:
> 
> (lambda o) ghc -fglasgow-exts A.hs                                            
>  A.hs:3:23: parse error on input: "("

I should have said that I've implemented the choices given
on the Standard Haskell web discussion page.  In particular:

===================
Choice 7a
~~~~~~~~~

The context in a class declaration (which introduces superclasses)
must constrain only type variables.  For example, this is legal:

        class (Foo a b, Baz b b) => Flob a b where ...
but not
        class (Foo [a] b, Baz (a,b) b) => Flob a b where ...

It might be possible to relax this restriction (which is the same
as in current Haskell) without losing decideability, but we're not
sure.  Choice 7a is conservative, and we don't know of any examples
that motivate relaxing the restriction.
===================

I'm frankly unsure of the consequences of lifting the 
restriction.  Can you give a compact summary of why you want
to?  Our multi-parameter type-class paper gives none, and if
you've got one I'd like to add it.

In the short term, you're stuck.  Damn!  First customer too!

Simon


Reply via email to