为什么定界延续原语被命名为“shift”?和“重置”?
我想我(总体上)理解 shift
和 reset
的含义。但我不明白为什么他们这么命名?作为定界延续原语的 shift
和 reset
与英语中的“shift”和“reset”单词有什么关系?
I think I understand (in general) what shift
and reset
mean. However I do not understand why they are named so ? What do shift
and reset
as Delimited Continuation primitives have to do with "shift" and "reset" words in English?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
它们之所以如此命名是因为它们的实现方式(一般而言)。
引自在MinCaml中直接实现Shift和Reset编译器
They're called so because of the way they are implemented (in general).
Quoted from Direct Implementation of Shift and Reset in the MinCaml Compiler
因为这就是丹维和他的方式。 Filinski 在第一篇论文中称这两个运算符为延续传递风格(另请参阅此处),它是Scala 实现了什么。
另一篇论文中描述了 Scala 中的实现。其中对 Danvy & 的引用菲林斯基说得很清楚:
Because that's the way Danvy & Filinski called those two operators in the first paper where they exposed that model of continuation-passing style (see also here), and it is what Scala implements.
The implementation in Scala is described in this other paper. The reference therein to Danvy & Filinski is clear: