如您所知,模板 Haskell 用于在编译时以编程方式生成各种AST Splices。
然而,Splice 经常是非常不透明的,往往很难辨别 Splice 实际生成了什么。如果您对 Splice 运行 Q Monad,并且 Splice 是良好类型化的,那么您会得到一个可显示的 AST 生成片段的表示,但由于其无结构布局,此表示可能非常难以理解。
将一段 TH 生成的 AST 转换为类似普通 Haskell 代码的首选方法是什么,以便可以轻松阅读和理解代码?可以从给定的 Dec 值重建源代码吗?必须阅读 GHC Core 代码吗?是否有一种方法可以使用结构来使 AST 变得更具可读性(超出 pretty-show 等工具的范围)?