Carga dinámica de la expresión de sintaxis abstracta de Haskell
-
29-10-2019 - |
Pregunta
¿Podemos usar la API de GHC o algo más para cargar no módulos de fuente de texto, sino expresiones AST, similares a haskell-src-exts Exp
type ?De esta forma, podríamos ahorrar tiempo para la generación y el análisis de código.
Solución
No creo que la API de GHC exponga una interfaz AST (aunque podría estar mal), pero Template Haskell sí.Si crea expresiones usando la estructura Language.Haskell.TH
Exp
, puede crear funciones / declaraciones y hacer uso de ellas mediante la sintaxis $(someTHFunction)
.
Una advertencia bastante importante es que TH solo se ejecuta en tiempo de compilación, por lo que necesitaría generar previamente todo.Si desea usar TH en tiempo de ejecución, creo que necesitaría imprimir de forma bonita la plantilla haskell AST y luego usar la API de GHC en la cadena resultante.