On Tue, 2004-07-20 at 11:06, Simon Peyton-Jones wrote:
Thanks for the offer.
Has anyone else encountered a need for this? Duncan, would you like to give some motivating examples?
I probably overestimated its general usefulness. I use it (actually something very similar) to help write TH programs that manipulate and produce other TH programs. (TH can't directly represent TH programs so we have to use encodings)
For the present, I'm inclined to leave it as a user library.
Seems reasonable. It's quite simple so I might try & get it to use the new simple library build spec. Also, Ian thought it would not work well with ghc's bootstrap build system. He thought that the libs get build with a stage2 ghc which does not have ghci and therefore does not have TH enabled so my library would not build anyway if it were distributed with ghc. Is this right? Can libs distributed with ghc not use TH syntax? While on the topic of TH, let me float "yet another idea"TM Include {-# #-} pragmas in the TH abstract syntax. Why? Because it would allow domain/library-specific hints and annotations. data Pragma = PragmaGhcRule ... PragmaGhcSpecialise ... PragmaOther String --free form My application of this might be to let the user indicate binding times when doing partial evaluation, eg: {-# BT foo :: Static -> Dynamic -> Dynamic #-} foo :: Int -> Int -> int foo x y = ... Duncan