2

我想知道一种原生支持分隔延续的编程语言。我确实知道 Scala 曾经有shiftand reset,但是那些被删除了;而且我也知道 Seaside 似乎有类似的东西,但 Seaside 是一个库,据我了解,Smalltalk 不支持分隔延续。

那么,有没有支持这种延续的编程语言呢?

谢谢!

4

2 回答 2

5

在大多数 Smalltalk 方言中,您可以轻松实现定界延续(或任何其他类型的延续)。由于环境的高度反射性,您可以遍历运行时堆栈并复制和重新实例化执行堆栈的任何部分。事实上,这正是Seaside正在做的事情。

看看这些蒙蒂塞洛包中实现的不同类型的延续:http: //source.lukas-renggli.ch/continuations/。该Continuation软件包包括各种类型的完整和部分延续(重置转移和提示控制风格)的测试和示例。该Generators软件包包括生成器的实现。

于 2018-04-18T19:41:43.213 回答
5

正如@user633183 指出的那样,Racket 有一组极其丰富的延续运算符。它包括移位和重置以及许多其他等效的连续操作集。

请参阅文档,位于

https://docs.racket-lang.org/reference/cont.html?q=racket%2Fcontrol#%28mod-path._racket%2Fcontrol%29

于 2018-04-19T16:14:28.903 回答