
class alias Foo a => Foo a = Bar a where ...
Has a defined (if not very useful) meaning with class aliases, but is really odd if you consider 'Foo a' a "superclass". So, I think the following terminology should be used:
Context of --+ alias | The alias -+ +--- The expansion of the alias | | | v v v
class alias (S1 a .. Sn a) => A a = (C1 a ... Cn a) where fd1 = .... .... fdn = .... ^ +---- The defaults of the alias
Should all of the arguments of the Ci be the same type variable `a' as in the alias A a or can they be other types as well, like e.g. C1 [a] or C2 Int? Tom -- Tom Schrijvers Department of Computer Science K.U. Leuven Celestijnenlaan 200A B-3001 Heverlee Belgium tel: +32 16 327544 e-mail: tom.schrijvers@cs.kuleuven.be url: http://www.cs.kuleuven.be/~toms/