Charge dynamique de l'expression de syntaxe abstraite de Haskell
-
29-10-2019 - |
Question
Pouvons-nous utiliser l'API GHC ou autre chose pour charger non pas des modules de source de texte, mais des expressions AST, similaires à Haskell-Src-Extets Exp
taper? De cette façon, nous pourrions gagner du temps pour la génération de code et l'analyse.
La solution
Je ne pense pas que l'API GHC expose une interface AST (pourrait être fausse cependant), mais le modèle Haskell le fait. Si vous construisez des expressions en utilisant le Language.Haskell.TH
Exp
Structure, vous pouvez créer des fonctions / déclarations et en utiliser par le $(someTHFunction)
syntaxe.
Une mise en garde assez majeure est que TH ne fonctionne qu'au moment de la compilation, vous auriez donc besoin de tout pré-générer. Si vous voulez utiliser le temps d'exécution, je pense que vous devez imprimer le modèle Haskell AST, puis utilisez l'API GHC sur la chaîne résultante.