【问题标题】:Is there something like stateful continuations or continuations with saved heap?是否有状态延续或保存堆的延续之类的东西?
【发布时间】:2019-07-28 05:47:42
【问题描述】:

在函数式编程中,延续非常有用,因为延续存储程序计数器和堆栈;可变堆显然不需要保存。

如果您想在 Java、JavaScript 等非函数式编程语言中应用延续怎么办?在这里,如果需要,我们应该保存可变堆以正确恢复程序。我一直在寻找一种可以在这种语言(例如 Java)中使用的技术,例如延续,但我找不到。你知道吗?

【问题讨论】:

  • Continuations 不存储“程序计数器”、“堆栈”或“堆”。它们存储了足够的状态,允许它们从中断的地方继续(因此得名“continuation”)。 Java 等中的 closure 会“关闭”运行所需的可变和不可变数据。因此,它对堆或堆栈一无所知。
  • 不需要可变堆”是什么意思?还有为什么你认为 JavaScript 没有功能?

标签: functional-programming heap-memory continuations


【解决方案1】:

我不认为典型的延续实现支持堆的自动跟踪,但它绝对是可以相对容易添加的东西。

例如,Seaside web framework 使用延续来模拟显示组件的流程。由于保存完整的堆会很昂贵,开发人员可以register which objects they like to track。这通过在创建延续时创建快照并在继续延续时恢复对象来工作。这样可以在使用浏览器中的后退和前进按钮时自动恢复应用程序状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-28
    • 2015-02-11
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 2011-06-29
    相关资源
    最近更新 更多