GHC的设计基于称为STG的东西,STG代表“无脊椎,无标签G机”。

现在,G机器显然是“图形归约机器”的缩写,它定义了如何实现懒惰。未评估的重排将作为表达式树存储,执行程序需要将其减少为正常形式。 (树是非循环图,但是Haskell的普遍递归意味着Haskell表达式形成一般图,因此是图约简而不是树约简。)

不太清楚的是术语“无骨”和“无标签”。

  • 我认为“无 Backbone ”是指功能应用程序没有功能应用程序节点的“ Backbone ”这一事实。取而代之的是,您有一个对象来命名所调用的函数并指向其所有参数。那是对的吗?
  • 我以为“无标签”是指构造函数节点未使用构造函数ID进行“标记”,而是使用跳转指令解决了大小写表达式。但是现在我不确定那是正确的。取而代之的是,这似乎是指节点未使用其评估状态进行标记。任何人都可以澄清这些解释中哪些(如果有)是正确的?
  • 最佳答案

    GHC Wiki包含由Max Bolingbroke撰写的有关STG的介绍性文章:

    09-25 18:46