| My current prototype uses GHC and Template Haskell. It can only
| specialise functions that manipulate first order values. It does work
| for a number of simple examples eg Ackerman function (specialised on
| first argument), matrix multiplication (specialising on fixed size
| matrices), a simple language interpreter (specialised to a fixed input
| program).
You're doing PE of full Haskell, right? Another possibility would be to
do PE of Core. It's a much, much, much, much smaller language. Why
would you want to do it at the Haskell source level? (Apart from the
fact that's what TH directly supports?) Admittedly, if you want
annotations, then getting them through to Core un-harmed would require a
little work.
Simon