是否有一种原生支持分隔延续的编程语言?

时间:2018-04-18 16:20:04

标签: continuations delimited-continuations

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

那么,是否有支持此类延续的编程语言?

谢谢!

2 个答案:

答案 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