【问题标题】:Are there any programming languages where continuations restore the heap in addition to the stack?除了堆栈之外,是否有任何编程语言可以继续恢复堆?
【发布时间】:2011-03-19 03:33:39
【问题描述】:

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

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

【问题讨论】:

  • 对不起,我不明白你的问题毛里西奥。你能澄清一下吗?

标签: programming-languages continuations


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-06-01
    • 2019-02-23
    • 1970-01-01
    • 2016-02-29
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 2015-05-15
    相关资源
    最近更新 更多