1

我熟悉的支持延续的语言(Scheme 和 Ruby)从创建延续时恢复堆栈状态和指令指针。我想知道是否有任何编程语言调用延续也会恢复堆?

[编辑:] 除了我接受的 Marcelo 的回答之外,我还发现了一个支持“商店”概念的 ML 扩展,这实际上就是我所描述的。请参阅 Greg Morrisett 的论文Refining First Class Stores

4

1 回答 1

2

由于所有对象在 Haskell 中都是不可变的,我认为可以肯定地说,延续将恢复进程的整个状态,包括堆。

弄清楚它如何影响 I/O 和其他单子行为会很有趣。我会大胆猜测类型系统不允许返回到 I/O 事件发生之前的状态。(延续本身就是一个单子,所以你可能不能将它与 I/O 交错。)

警告:我几乎不知道 Haskell,所以上面的评论可能是一堆可笑的废话。

于 2011-03-19T03:49:06.303 回答