2011-03-19 63 views
1

我熟悉支持continuations(Scheme和Ruby)的语言,可以在创建延续时恢复堆栈状态和指令指针。我想知道是否有任何编程语言在调用continuation时也会恢复堆?除了堆栈之外,还有哪些编程语言在继续恢复堆?

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

+0

何时堆状态丢失? – Mauricio 2011-03-19 03:45:45

+0

对不起,我不明白你的问题Mauricio。你能澄清吗? – cdiggins 2011-03-19 20:39:04

回答

2

由于所有的对象在Haskell中都是不可变的,所以我认为可以说继续会恢复整个进程状态(包括堆)是安全的。

弄清楚它是如何影响I/O和其他一元行为会很有趣。我会冒险猜测类型系统不会允许在发生I/O事件之前返回到状态。 (一个延续本身就是一个monad,所以你可能不能用I/O交织它。)

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