Automatically deriving Generic for every algebraic data type
Wolfgang Jeltsch
g9ks157k at acme.softbase.org
Thu Feb 4 12:19:45 UTC 2016
Hi,
if you do generic programming these days, you can use DeriveAnyClass to
write code like the following (where Serializable is a class with a
generic default implementation):
> data Tree a = Leaf | Branch (Tree a) a (Tree a)
> deriving (Generic, Serializable)
It would be great, if you could just write the following instead:
> data Tree a = Leaf | Branch (Tree a) a (Tree a) deriving Serializable
This would correspond exactly to what you do when using standard Haskell
deriving. It could be made possible by letting the compiler instantiate
the Generic class automatically every time an algebraic data type is
declared. A potential downside of this would be that programmers would
not be able to define non-standard instances of Generics, but I actually
cannot see that this is very useful anyhow.
Any comments?
All the best,
Wolfgang
More information about the ghc-devs
mailing list