Подтвердить что ты не робот

Можно ли использовать API GHC для изменения программы при ее компиляции?

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

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

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

expectJust mkStubPaths

Любые идеи о том, как сделать эту работу, или если это возможно реализовать таким образом преобразование кода?

4b9b3361

Ответ 2

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