E 'possibile utilizzare l'API GHC di modificare un programma durante la compilazione esso?
Domanda
Voglio testare l'implementazione di un'ottimizzazione del compilatore per bagarinaggio nel processo di compilazione GHC ed alterando la sua rappresentazione Nucleo. L'idea sarebbe quella di avere qualcosa di simile:
runGhc (Just libdir) $ do
...
c <- compileToCoreModule targetFile
compileCoreToObj False (modify c)
...
dove modify
prende la rappresentazione Core e restituisce la versione modificata. Questo codice, tuttavia, non riesce (anche quando non fa nulla di modifica a tutti) con il messaggio non molto utile:
expectJust mkStubPaths
Tutte le idee su come fare questo lavoro, o se è anche possibile implementare una trasformazione del codice in questo modo?
Soluzione
che suona come un bug in compileCoreToObj
a me. Si prega di segnalarlo .
Altri suggerimenti
GHC ha il supporto per plugin oggi, che sembrano fare esattamente quello che vuoi.