Proposal for stand-alone deriving declarations?

Manuel M T Chakravarty chak at cse.unsw.edu.au
Thu Oct 5 10:47:55 EDT 2006


Bjorn Bringert:
> On http://hackage.haskell.org/trac/haskell-prime/wiki/ 
> DerivedInstances it says:
> 
> "- There is no way to derive an instance of a class for a data type  
> that is defined elsewhere (in another module)."
> 
> Though there is no proposal to fix this. Would such a proposal be  
> appropriate for Haskell'?

I think this would be a useful feature to have.  (I certainly wished to
have independent deriving declarations many times when writing Haskell
code.)  It also seems to be a fairly small, well understood extension.

> If so, I propose to add a top-level declaration on the form:
> 
> 'deriving' qtycls 'for' qtycon
> 
> which produces the same instance as a deriving clause in the  
> declaration of the datatype or newtype would.

I guess, the right way to go about this would be to say that independent
deriving declarations are the fundamental way of deriving a type class.
The original form of a deriving clause at a data/newtype declaration is,
then, just a syntactic shorthand for a data/newtype declaration plus a
bunch of independent deriving declarations.

What is not so nice is that you take a new keyword ('for'), which is
quite likely to have been used as a variable name in existing code.  (Or
does it work out to use one of the 'special' names here?)

I think it would be useful to write the proposal in complete detail up
on the Haskell' wiki.

Manuel




More information about the Haskell-prime mailing list