Можно ли использовать GHC API для изменения программы во время ее компиляции? - PullRequest
11 голосов
/ 05 октября 2010

Я хочу протестировать реализацию оптимизации компилятора, включив процесс компиляции GHC и изменив его представление Core. Идея состоит в том, чтобы иметь что-то вроде:

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

где modify принимает представление Core и возвращает измененную версию. Этот код, однако, не работает (даже если модификация вообще ничего не делает) с не очень полезным сообщением:

expectJust mkStubPaths

Есть какие-нибудь идеи о том, как заставить это работать, или если вообще возможно реализовать преобразование кода таким образом?

Ответы [ 2 ]

9 голосов
/ 05 октября 2010

Для меня это звучит как ошибка в compileCoreToObj.Пожалуйста, сообщите об этом .

6 голосов
/ 21 января 2012

GHC теперь поддерживает плагинов , которые, кажется, делают именно то, что вы хотите.

...