Quoting Simon Peyton-Jones <simo...@microsoft.com>:
I've considered this before, but never done anything about it because
superclasses are so close. Specifically, what is the difference between
(i) class (C a, D a) => CD a
(ii) class alias CD a = (C a, D a)
Note that (i) is Haskell 98.
To be a true typeclass synonym, there would also be an implied default
class (C a, D a) => CD a
instance (C a, D a) => CD a
...and this is not Haskell 98.