我熟悉支持continuation的语言(Scheme和Ruby)从创建continuation时恢复堆栈状态和指令指针。我想知道是否有任何编程语言调用继续恢复堆?
[编辑:]除了我接受的马塞洛的答案之外,我还发现了ML的扩展,它支持“商店”的概念,这实际上就是我所描述的。请参阅Greg Morrisett撰写的文章Refining First Class Stores。
答案 0 :(得分:2)
由于所有对象在Haskell中都是不可变的,我认为可以安全地说继续将恢复进程的整个状态,包括堆。
了解它如何影响I / O和其他monadic行为会很有趣。我会冒险猜测类型系统不会允许返回到I / O事件发生之前的状态。 (延续本身就是一个monad,因此您可能无法将其与I / O交错。)
警告:我几乎不了解Haskell,所以上面的评论可能是一堆可笑的废话。