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