我正在call/cc
Racket 中按照论文Continuations by example: Exceptions, time-traveling search, generators, threads, and coroutines 1学习。
该论文提到,最有利的 API 是call/cc
通过提供一个过程派生而来的lambda (cc) (cc cc)
。我理解这个特定call/cc
的调用将当前的延续一等对象返回给主程序。
在下面的示例中,本文将所有 this 称为(right-now)
.
我看到的是,在同一个示例中cc
,上述call/cc
调用返回的对象总是在之后通过将其应用于自身来运行。这就是我不明白的。
我没有看到 value 有什么特别之处cc
,所以我尝试用(cc ())
, or (cc (lambda () ()))
, 甚至(cc "whatever")
and来启动它(cc)
。没有任何乐趣:显然,延续只需要该应用程序自己才能开始运行。
这是为什么?有什么例子可以清楚地说明运行 cc 的独特性(cc cc)
?