Mic*_*ael 8 language-agnostic continuations programming-languages functional-programming
我猜想之间的差别delimited,并undelimited延续像之间的差异call和jump.
如果我们调用delimitedcontinuation,它将在完成后返回给调用者.如果我们调用undelimitedcontinuation,它就会工作,goto并且永远不会返回给调用者.
是否有意义?我错过了什么吗?
你有点偏离轨道.任何风味的延续都与goto(跳跃)无关.但是,它们与堆栈有关.
经典延续
记住常规continuation将控件堆栈的概念捕获为第一类值.堆栈可以被命名,作为参数传递,并且值可以应用于它们,从而产生控制流程的变化,使用基于函数应用程序的简单API callCC.
定界延续
分隔的延续是什么增加了混合?
回想一下,常规连续捕获整个调用堆栈到某一点.如果我们可以在其中放置标记,确切地说要在延续中捕获多少控制堆栈,该怎么办?一种控制堆栈的"划界".
这就是想法,现在你有超酷的分隔延续:分隔,捕捉和操纵程序的任意部分,作为一个值.非常适合恢复和增量处理,以及其他棘手的控制流程.
参考
笔记
Oleg Kiselyov的一些更正,被列入清单:
J操作员正是为此目的而准备的; J是call/cc的前身.请参阅Landin的"跳跃和标签的概括"简介