È possibile utilizzare GHC API o qualcos'altro per caricare non moduli 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.Caricamento dinamico dell'espressione di sintassi astratta Haskell
5
A
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.TH
Exp
, è 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.
Problemi correlati
- 1. Caricamento dinamico del modulo Haskell compilato - GHC 7.6
- 2. Sintassi di regex di Haskell
- 3. Caricamento dinamico di una DLL
- 4. Cos'è questa sintassi haskell?
- 5. Haskell sintassi Newtype
- 6. Sintassi in Haskell "Functor [::]"
- 7. Caricamento dinamico degli script
- 8. Caricamento dinamico in Golang?
- 9. Caricamento dinamico CSS
- 10. Regole semantiche/Regole dell'albero della sintassi astratta
- 11. Caricamento dinamico del carattere Web
- 12. caricamento dinamico della libreria statica?
- 13. Caricamento dinamico di controller e ng-include
- 14. Caricamento dinamico di librerie condivise Linux?
- 15. Java Caricamento dinamico di una classe
- 16. Actionscript 3: caricamento dinamico di file ai?
- 17. Caricamento dinamico di Google Maps API
- 18. Caricamento dinamico di oggetti condivisi usando dlopen()
- 19. Angular2 caricamento di contenuto dinamico/html in per loop
- 20. Rappresentazione astratta della struttura della sintassi in C++
- 21. Chiamata di Haskell da Java, errore di collegamento dinamico Relocation
- 22. Caricamento dinamico delle classi dal barattolo
- 23. caricamento dinamico del controller in angularjs $ routeProvider
- 24. Come reinizializzare flexslider per un caricamento dinamico
- 25. Caricamento dinamico e risoluzione dei simboli deboli
- 26. ExtJS MVC, caricamento dinamico e i18n
- 27. Caricamento dinamico delle immagini R.Drawable using variable
- 28. Lettore video HTML5: caricamento dinamico dei video
- 29. Caricamento dinamico dell'immagine con diversi parametri GET
- 30. estensione Perl sta rompendo il caricamento dinamico
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