Proposal for stand-alone deriving declarations?

Björn Bringert bringert at
Fri Oct 6 08:29:13 EDT 2006

Ketil Malde wrote:
> "Iavor Diatchki" <iavor.diatchki at> writes:
>> A question about the syntax:  would there be a problem if we made the
>> 'deriving' declaration look like an instance?
> And you might as well keep the 'instance' keyword when instantiating,
> even if the instance is derived?  Seems more consistent to me
> ('deriving' feels more like a kind of parameter to 'data'
> declarations) and avoids introducing a new keyword, except in the
> context of instance declarations.
>> deriving Show SomeType
>> deriving Eq (AnotherType a)
>   instance Show Sometype derived
>   instance Eq (AnotherType a) where (==) = ...
> -k

One problem with this is that there is no context in the declaration, e.g.:

instance Eq (AnotherType a) derived

Although the generated instance does have one:

instance Eq a => Eq (AnotherType a) where

(depending on how a is used by the data constructors of AnotherType).

This goes back to the argument I was making earlier about the 
differences between instance and deriving declarations.


More information about the Haskell-prime mailing list