2012-01-16 13 views

risposta

3

Non penso che l'API di GHC esponga un'interfaccia AST (potrebbe essere sbagliato però), ma Template Haskell lo fa. Se si creano espressioni utilizzando la struttura Language.Haskell.THExp, è possibile creare funzioni/dichiarazioni e utilizzarle mediante la sintassi $(someTHFunction).

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

+1

Anche io posso generare il codice sorgente Template Haskell. Questo può essere considerato un compromesso tra la generazione di espressioni AST e la generazione di una sorgente di testo Haskell. – modular

Problemi correlati