Как вы знаете, Template Haskell используется для программного создания различных видов сращиваний AST во время компиляции.
Однако соединение может быть очень непрозрачным, и зачастую трудно определить, что такое соединениена самом деле генерирует.Если вы запустите монаду Q
для соединения, и соединение будет хорошо типизировано, вы получите show
способное представление сгенерированного фрагмента AST, но это представление может быть очень трудным для понимания из-за его неструктурированного расположения.
Каков предпочтительный метод для преобразования фрагмента AST, сгенерированного TH, во что-то похожее на обычный код на Haskell, чтобы код можно было легко прочитать и понять?Можно ли восстановить исходный код, например, из заданного значения Dec
?Нужно ли читать код GHC Core?Есть ли способ по крайней мере структурировать AST так, чтобы он стал более читабельным (помимо того, что, например, делает пакет pretty-show
)?