> I saw Mark yesterday, and have made quite a few changes
> as a result. I've tried to address your points, and those
> made by others, but you'll have to judge how successfully!
>
> http://www.dcs.gla.ac.uk/~simonpj/multi-param.html
>
> Anyway, you might want to take another look.
Sigh. The type of each class operation must still mention all of the
class type variables. However, I now see more clearly why this
restriction is necessary. The idea to split the class into two
is nice and solves the problem. BTW The definition contains a typo:
class CollE s where
empty :: s
class CollE s => Coll s a where
insert :: s a -> a -> s a
The last line should probably read
insert :: s -> a -> s
Cheers, Ralf