Динамическая загрузка выражения абстрактного синтаксиса на Haskell - PullRequest
5 голосов
/ 16 января 2012

Можем ли мы использовать GHC API или что-то еще для загрузки не текстовых модулей, а выражений AST, аналогично haskell-src-exts Exp type ? Таким образом, мы могли бы сэкономить время на генерацию и разбор кода.

1 Ответ

3 голосов
/ 16 января 2012

Я не думаю, что GHC API предоставляет интерфейс AST (хотя может и ошибаться), но Template Haskell делает.Если вы строите выражения с использованием структуры Language.Haskell.TH Exp, вы можете создавать функции / объявления и использовать их по синтаксису $(someTHFunction).

Довольно серьезное предостережение заключается в том, что TH выполняется только во время компиляции, так что вам нужно предварительно сгенерировать все.Если вы хотите использовать TH во время выполнения, я думаю, вам нужно будет просто напечатать шаблон haskell AST, а затем использовать GHC API для полученной строки.

...