| > Neil Mitchell tells me that he and Simon PJ are in favour of adding
| > instances for Data, Typeable, and Uniplate for many of the datatypes used
| > inside GHC.  I agree that this should certainly be done for the external
| > interface of GHC, i.e., core-plugins and GHC API.  Here they could be done
| > without introducing new dependencies to GHC itself, therefore are
| > uncontroversial.
|
| I don't know enough about Uniplate to make a judgement on that point,
| so I'll just pipe up and say that having Data/Typeable instances for
| Expr, Binds and friends would be of much benefit to the GHC plugins
| project. I've actually already written my own instances and put them
| straight into CoreSyn.hs on the plugins branch, but having them
| available via an explicit import is probably a better approach.

You can implement Uniplate on top of Data/Typeable.  (It's slightly slower than 
giving Uniplate instances directly, but if my memory serves, not a lot. See 
Neil's theis.)  So you can think of Uniplate/Biplate as a rather nice API for 
generic programming, but one that shares a common set of instances underneath. 
I'll all for having Data/Typeable instances for the main GHC types, and a 
Uniplate API available on top.

Simon

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to