2

在阅读了关于 Scheme 的内容后,我发现了这个声明。

“方案相当于激活堆栈实际上是一个部分延续链(暂停记录)。”

我对这实际上意味着什么有点困惑。方案堆栈与 C 的区别是什么?

4

3 回答 3

5

Scheme 支持构造 call-with-current-continuation(在 R5RS 中了解它)。该构造可用于返回到先前的延续。这意味着激活记录不再形成堆栈。相反,激活记录形成一棵树(请注意,堆栈是树的特殊形式)。为了了解延续的概念,我可以推荐

丹尼尔·弗里德曼。“延续的应用:特邀教程”。1988 年编程语言原理 (POPL88)。1988 年 1 月。 http://www.cs.indiana.edu/hyplan/dfried/appcont.pdf

如果你迷上了延续,那么你会在这里找到很多有趣的论文。

于 2011-02-25T14:18:03.170 回答
0

在 C 语言中,您的堆栈只不过是一系列内存指针,告诉您停止时您在哪里。

在 Scheme 中,由于一切都是列表,因此您实际上只是在列表上移。您实际上可以将其视为您的程序是堆栈。

于 2011-02-24T23:56:49.813 回答
0

基本区别在于,在 Scheme(以及其他)中,堆栈的当前状态可以是/是第一类对象。您可以(例如)创建一个包含整个堆栈状态的变量。然后,您可以使用该延续从相同的起始状态调用不同的函数,或者您可以像普通列表一样遍历(方案视图)“堆栈”。

于 2011-02-25T00:05:19.980 回答