从haskell-src-exts修改漂亮的打印机

Dan*_*kov 5 haskell pretty-print

haskell-src-exts包具有很好的打印Haskell AST的功能.我想要做的是改变它在某些构造函数上的行为,在我的例子中是打印SCC编译指示的方式.因此,其他所有内容都应以默认方式打印,只有SCC的处理方式不同.是否可以在不复制源文件和编辑它的情况下完成,这就是我现在正在做的事情?

Don*_*art 2

好吧,这个库做了一件正确的事情,使用 Pretty 的类型类。接下来的挑战是如何为要以不同方式打印的构造函数选择不同的实例。理想情况下,您只需新建您关心的 AST 节点,然后以某种方式将其替换到 AST 中。

现在,这里的问题是库导出的 Haskell AST 的类型结构是固定的。例如,它不使用两级类型,这可以让您用新类型替换树的部分内容。因此,您必须将 AST 的类型重新定义为您想要更改类型的节点。