RE: Some ideas

"Simon Peyton-Jones" <[email protected]>
Newsgroups gmane.comp.lang.haskell.template
Message-ID <4B93206CA3C55D4F96A61C9B1DC80DE3011472E4@EUR-MSG-03.europe.corp.microsoft.com>
| 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.