【发布时间】:2011-04-18 04:59:53
【问题描述】:
有谁知道call/cc 是否可以仅使用 lambda 和闭包来实现?
似乎call/cc 中断了程序的流程(就像一个异常),但 lambda 和闭包不能这样做。因此我认为call/cc 不能通过 lambdas 和闭包来实现。
还有什么想法吗?
【问题讨论】:
-
不,要获得完整的持续支持(iow 不是单次支持的),您将需要堆栈和堆捕获。这一切都发生在非常低的水平上。
-
@leppie 我很乐意将其作为答案。
-
@Frank Shearar:如果我真的成功实现了它们,我会 :) 继续很难,我们去购物吧!
-
Seaside 人(3.0 之前的版本)作弊:访问堆栈后,他们只需遍历激活记录并将它们混合到流中。在重新激活延续时,他们解开流并继续。
标签: lisp computer-science scheme continuations callcc