É possível usar a API do GHC para modificar um programa enquanto a compilam?
Pergunta
Quero testar a implementação uma otimização do compilador, pegando bobo no processo de compilação do GHC e alterando sua representação principal. A idéia seria ter algo como:
runGhc (Just libdir) $ do
...
c <- compileToCoreModule targetFile
compileCoreToObj False (modify c)
...
Onde modify
pega a representação principal e retorna a versão modificada. Esse código, no entanto, falha (mesmo quando Modify não faz nada) com a mensagem não muito útil:
expectJust mkStubPaths
Alguma idéia de como fazer isso funcionar ou se é possível implementar uma transformação de código dessa maneira?
Solução
Isso soa como um bug em compileCoreToObj
para mim. Por favor Relate.
Outras dicas
GHC tem apoio para plugins Agora, que parecem fazer exatamente o que você deseja.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow