2011-02-24 63 views
2

在阅读关于计划时,我遇到了这个说法。Scheme中的“Stack”。什么使它特别?

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

我对这其实是什么意思有点困惑。 C的方案堆栈有什么区别?

回答

0

在C中,你的堆栈只不过是一系列的内存指针,告诉你当你离开时你在哪里。

在Scheme中,因为所有东西都是列表,所以你只是向上移动一个列表。你可以看看它,就像你的程序是堆栈。

0

的基本区别在于,在方案(除了别的以外)的堆叠可以是的当前状态/是第一类对象。你可以(例如)创建一个保存整个堆栈状态的变量。然后,您可以使用该延续从相同的起始状态调用不同的功能,也可以像正常列表一样走过“堆栈”的(方案视图)。

4

方案支持构建呼叫与电流延续(在R5RS读到它)。该构造可以用来返回到前一个继续。这意味着激活记录不再构成堆栈。相反,激活记录形成一棵树(请注意,堆栈是树的特殊形式)。为了得到延续概念的感觉,我可以推荐

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

如果你勾搭上延续,那么你会发现许多有趣的论文在这里: http://library.readscheme.org/page6.html