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