修改Haskell源代码中的漂亮打印器

5

使用haskell-src-exts包中的函数对Haskell AST进行漂亮打印。

我想要做的是改变某些构造函数的行为,例如在我的情况下,修改SCC指示语的打印方式。因此,除了SCC之外,其他所有内容都应该按默认方式打印,只有SCCs需要以不同的方式处理。是否可以在不复制源文件并进行编辑的情况下实现这一点,这正是我现在正在做的事情?

1个回答

2
嗯,图书馆在Pretty方面使用了类型类做得不错。挑战在于如何为您想要以不同方式打印的构造函数选择不同的实例。理想情况下,您只需要对您关心的AST节点进行newtype,并将其替换为AST即可。

现在,问题在于由图书馆导出的Haskell AST具有固定的类型结构。它不会使用例如 two-level types,这将允许您替换树的部分的newtypes。因此,您必须重新定义AST的类型,直到您希望更改其类型的节点。

这种技术如何用于替换AST中的节点?假设我想要在引用论文中的定义中,将Term中的Arith替换为自定义类型MyArith。但是Term不是已经固定使用了Arith的定义吗? - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接