繁体   English   中英

GHC核心的`Show`实例

[英]`Show` instance for GHC core

我正在尝试使用GHC核心数据类型。 我能够将我的Haskell源代码编译为类型为Bind CoreBndr核心表示。 我们知道此数据类型没有默认的Show实例。 有一种方法可以很好地打印这种表示,但它有太多与之相关的噪音。 我想将GHC核心视为任何其他代数数据类型并用它来编写函数。 如果我们有一个GHC核心的Show实例会容易得多。 有没有人写过我可以重用的节目实例?

此外,社区如何编写和验证处理GHC核心的程序?

在经历垃圾箱在GHC和思考同样的问题,我可以自信地说,一个天真的实现Show在GHC是不是你想要的。 这是因为内部GHC在其许多数据类型中都有递归。 例如,在TyConAlgTyConRhsDataCon之间我们有:

TyConAlgTyCon ,其中包含AlgTyConRhs

AlgTyConRhs包含data_cons :: [DataCon]作为其记录字段之一。

DataCon包含dcRepTyCon :: TyCon作为其字段之一。

因此我们走了一圈。 由于Show工作方式,如果您尝试打印它,这样的递归将创建无限输出。

为了获得具有数据构造函数和所有显示的“漂亮”自定义表示,您必须自己编写它。 这实际上有点挑战性,因为你必须考虑和调试这样的递归情况,默认漂亮的打印机已经解决了。

这很乏味,很多标签都打开了,但这是一个很好的学习经历:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM