我想知道一种原生支持分隔延续的编程语言。我确实知道 Scala 曾经有shift
and reset
,但是那些被删除了;而且我也知道 Seaside 似乎有类似的东西,但 Seaside 是一个库,据我了解,Smalltalk 不支持分隔延续。
那么,有没有支持这种延续的编程语言呢?
谢谢!
我想知道一种原生支持分隔延续的编程语言。我确实知道 Scala 曾经有shift
and reset
,但是那些被删除了;而且我也知道 Seaside 似乎有类似的东西,但 Seaside 是一个库,据我了解,Smalltalk 不支持分隔延续。
那么,有没有支持这种延续的编程语言呢?
谢谢!
在大多数 Smalltalk 方言中,您可以轻松实现定界延续(或任何其他类型的延续)。由于环境的高度反射性,您可以遍历运行时堆栈并复制和重新实例化执行堆栈的任何部分。事实上,这正是Seaside正在做的事情。
看看这些蒙蒂塞洛包中实现的不同类型的延续:http: //source.lukas-renggli.ch/continuations/。该Continuation
软件包包括各种类型的完整和部分延续(重置转移和提示控制风格)的测试和示例。该Generators
软件包包括生成器的实现。
正如@user633183 指出的那样,Racket 有一组极其丰富的延续运算符。它包括移位和重置以及许多其他等效的连续操作集。
请参阅文档,位于
https://docs.racket-lang.org/reference/cont.html?q=racket%2Fcontrol#%28mod-path._racket%2Fcontrol%29