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