Olaf Chitil suggests making "deriving" semi-detachable from type
declararations, thusly:
> deriving Tree (Eq, Ord, Show)
or:
> deriving (Tree a) (Eq, Ord, Show)
I think this is a pretty sensible idea, but I believe it would be
preferable to use a more instance-like syntax, given that's what
is effectively happening.
Specifically, the following springs to mind:
derived instance Eq a => Eq (Tree a)
etc.
The type constraint here is admittedly somewhat redundant, as it's
the only possible one, but it has the merit of consistency.
Obviously one would also want to retain the existing syntax as-is,
in this case.
Cheers,
Alex.