Динамическая загрузка выражения абстрактного синтаксиса Haskell
-
29-10-2019 - |
Вопрос
Можем ли мы использовать GHC API или что-то еще, чтобы загружать не текстовые исходные модули, а выражения AST, аналогичные haskell-src-exts Exp
type ?Таким образом мы могли сэкономить время на генерацию и анализ кода.
Решение
Я не думаю, что API GHC обнажает интерфейс AST (хотя может быть не так), но шаблон Haskell делает.Если вы создаете выражения, используя структуру Language.Haskell.TH
Exp
, вы можете создавать функции / объявления и использовать их синтаксисом $(someTHFunction)
.
Довольно крупное предостережение заключается в том, что я работает только в компиляционном времени, поэтому вам нужно будет предварительно генерировать все.Если вы хотите использовать во время выполнения, я думаю, вам нужно будет довольно печатать шаблон Haskell AST, затем используйте API GHC на результирующей строке.