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