页面“高级方案:有些顽皮”指出:
延续是一个强大的控制流构造,几乎可以从 任何其他控制流结构中得出。
我以为Scheme的call/cc
(*)与Peter Landin的J运算符相关,可以用于实现任何已知的控制流结构?
对于“控制流结构”,我特别考虑了Wikipedia对它们的描述,例如,异常,协程,绿色线程等。
具体来说,有没有使用不能实现的控制流结构的示例call/cc
?
(*)我无法挖掘出任何可以证明call/cc
像J运算符一样强大的论文。 Felleisen的一篇论文(我还没有读过,并且承认很难完全理解它)对此进行了调查,似乎可以得出结论,即使它们处于不同的复杂性类别中,它们在形式上也是等效的。
(还请注意,我已根据以下评论更新了问题)
更新资料
基于下面@Neel的出色回答,我看了一些评论定界和不定界延续的网站,确实看来,尽管call/cc
不定界是不够的。同时,第一级,分隔延续(像shift/reset
)可以被使用,似乎表达任何控制流结构。
call/cc
无限延续不能表达例外。(正如Thielecke继续指出的那样,可以通过传递两个延续来实现异常,一个延续给程序,另一个延续给异常处理程序,但这不仅需要执行。)call/cc
amb
-operator等。