2010-10-05 8 views
11

Ich möchte die Implementierung einer Compiler-Optimierung testen, indem ich in den GHC-Kompilierungsprozess huckepack und seine Kerndarstellung ändere. Die Idee wäre, wie etwas zu haben:Kann die GHC-API verwendet werden, um ein Programm zu ändern, während es kompiliert wird?

runGhc (Just libdir) $ do 
    ... 
    c <- compileToCoreModule targetFile 
    compileCoreToObj False (modify c) 
    ... 

wo modify die Core-Darstellung nimmt und gibt die modifizierte Version. Dieser Code ist jedoch nicht (auch wenn modify tut nichts) mit dem nicht sehr hilfreich Nachricht:

expectJust mkStubPaths 

Alle Ideen, wie diese Arbeit zu machen, oder ob es sogar möglich, eine Codetransformation auf diese Weise zu implementieren ?

Antwort

9

Das klingt nach einem Fehler in compileCoreToObj für mich. Bitte report it.

+0

Ich zögerte, es zu melden, weil ich nicht sicher war, ob ich die Funktionen richtig verwendete. Gibt es Beispiele für diese Art von Transformationen? – matiash

+0

Ich kenne keine konkreten Beispiele, nein. –

+0

Gibt es Fortschritte bei diesem Problem? Ich habe heute genau den gleichen Code ausprobiert und es ergab sich die gleiche Fehlermeldung. –

6

GHC hat jetzt Unterstützung für plugins, die genau das zu tun scheinen, was Sie wollen.

Verwandte Themen