gpt4 book ai didi

haskell - `Show` GHC 核心实例

转载 作者:行者123 更新时间:2023-12-02 15:47:36 27 4
gpt4 key购买 nike

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

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

最佳答案

GHC 中 Show 的简单实现可能不是您想要的。原因是 GHC 内部的许多数据类型都有递归。例如,TyCon之间, AlgTyConRhs ,和DataCon我们有:

TyConAlgTyCon,其中包含 AlgTyConRhs

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

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

这样我们就回到原点了。由于 Show 的工作原理,如果您尝试打印它,这样的递归将创建无限的输出。

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

关于haskell - `Show` GHC 核心实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42342162/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com