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: [EMAIL PROTECTED]
url: http://www.cs.kuleuven.be/~toms/
_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime

Reply via email to