
Ketil Malde wrote:
"Iavor Diatchki"
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. /Björn