Domanda

Possiamo usare l'API GHC o qualcos'altro per caricare non moduli di origine di testo, ma espressioni AST, simili a haskell-src-exts Exp type ?In questo modo potremmo risparmiare tempo per la generazione e l'analisi del codice.

È stato utile?

Soluzione

Non credo che l'API GHC esponga un'interfaccia AST (potrebbe essere sbagliata), ma Template Haskell lo fa.Se crei espressioni utilizzando la struttura Language.Haskell.TH Exp, puoi creare funzioni / dichiarazioni e utilizzarle con la sintassi $(someTHFunction).

Un avvertimento abbastanza importante è che TH viene eseguito solo in fase di compilazione, quindi è necessario pre-generare tutto.Se desideri utilizzare TH in fase di esecuzione, penso che dovresti stampare abbastanza il modello haskell AST, quindi utilizzare l'API GHC sulla stringa risultante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top