Carregamento dinâmico da expressão de sintaxe abstrata Haskell
-
29-10-2019 - |
Pergunta
Podemos usar a API GHC ou outra coisa para carregar não módulos de fonte de texto, mas expressões AST, semelhantes a haskell-src-exts tipo Exp
?Dessa forma, podemos economizar tempo para geração e análise de código.
Solução
Não acho que a API GHC exponha uma interface AST (embora possa estar errada), mas o Template Haskell sim.Se você construir expressões usando a estrutura Language.Haskell.TH
Exp
, poderá criar funções / declarações e fazer uso delas pela sintaxe $(someTHFunction)
.
Uma advertência bastante importante é que o TH só roda em tempo de compilação, então você precisa pré-gerar tudo.Se você quiser usar o TH em tempo de execução, acho que você precisa imprimir o template haskell AST e, em seguida, usar a API GHC na string resultante.