Scheme 方案中的“堆栈”。它有什么特别之处?

Scheme 方案中的“堆栈”。它有什么特别之处?,scheme,stack,continuations,Scheme,Stack,Continuations,在读到这个计划时,我偶然发现了这个说法 Scheme相当于一个激活堆栈,实际上是一个部分连续暂停记录链 我有点搞不懂这到底意味着什么。scheme堆栈与C的区别是什么?在C中,堆栈只不过是一系列内存指针,告诉您离开时的位置 在Scheme中,由于所有内容都是一个列表,所以实际上只是向上移动一个列表。实际上,您可以将其视为程序就是堆栈。基本区别在于,在Scheme中,堆栈的当前状态可以是/是一类对象。例如,您可以创建一个保存整个堆栈状态的变量。然后,您可以使用该延续从相同的启动状态调用不同的函数,

在读到这个计划时,我偶然发现了这个说法

Scheme相当于一个激活堆栈,实际上是一个部分连续暂停记录链


我有点搞不懂这到底意味着什么。scheme堆栈与C的区别是什么?

在C中,堆栈只不过是一系列内存指针,告诉您离开时的位置


在Scheme中,由于所有内容都是一个列表,所以实际上只是向上移动一个列表。实际上,您可以将其视为程序就是堆栈。

基本区别在于,在Scheme中,堆栈的当前状态可以是/是一类对象。例如,您可以创建一个保存整个堆栈状态的变量。然后,您可以使用该延续从相同的启动状态调用不同的函数,或者可以像普通列表一样遍历堆栈的Scheme视图。

Scheme支持构造调用,并在R5RS中读取当前延续。该构造可用于返回到上一个继续。这意味着激活记录不再形成堆栈。相反,激活记录形成一棵树。请注意,堆栈是树的特殊形式。为了了解延续的概念,我可以推荐

丹尼尔·p·弗里德曼。延续的应用:特邀教程。 1988编程语言原则POPL88。1988年1月。

如果你迷上了连续体,那么你会发现很多有趣的论文