[Template-haskell] Some ideas
Simon Peyton-Jones
simonpj at microsoft.com
Tue Apr 27 13:32:09 EDT 2004
| Using this we could say (on the toplevel of a module):
| addDeriving ("Fold", deriveFold)
|
| Note that this would let us derive not only instances but new
| functions or even new data types. Mega Awsome!
Can't you do this already?
data T = MkT Int
$(deriveFold 'T)
where deriveFold :: TH.Name -> Q [Dec]
| Splicing pragmas
| ===============
|
| It would be nice to be able to splice in compiler pragmas. For example
| if one writes a TH module for deriving folds and builds one would like
| to generate rules pragmas so that GHC can fuse these functions when
| they are used. Generating self-optimising code :).
|
| Concretely one would add a constructor to the Dec data type. Something
| like this:
|
| data Dec = ...
| | PragmaD Pragma
Yes, more and more GHC extensions are creeping into TH, and maybe that's
OK. It is tiresome, but not difficult, to extend the abstract syntax
and to-and-fro conversions. Ian Lynagh has become quite good at it. OK
with me!
| >From Meta Haskell to Meta X
| ===========================
I don't know how to make a good job of this, but it seems like a good
problem for someone to study. The thing is that language X has scoping
and typing rules that are different to Haskell's. How to express them?
It's not just syntax!
Simon
More information about the template-haskell
mailing list