问题标签 [delimited-continuations]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 什么是 Scala 延续,为什么要使用它们?
我刚刚完成了 Scala 编程,我一直在研究 Scala 2.7 和 2.8 之间的变化。似乎最重要的是延续插件,但我不明白它有什么用处或它是如何工作的。我已经看到它对异步 I/O 有好处,但我无法找出原因。关于这个主题的一些更受欢迎的资源是:
还有这个关于 Stack Overflow 的问题:
不幸的是,这些参考资料都没有尝试定义延续的用途或移位/重置功能应该做什么,而且我还没有找到任何参考资料。我无法猜测链接文章中的任何示例如何工作(或它们的作用),因此帮助我的一种方法可能是逐行浏览其中一个示例。即使是第三篇文章中的这个简单的一篇:
为什么结果是 8?这可能会帮助我开始。
scala - 嵌套 CPS “重置”
使用 Scala 2.8 的 CPS 编译器插件,有两个魔术控件reset
和shift
. 重置界定延续,移位捕捉延续。
有一个使用 CPS 和 NIO 的例子,使用嵌套重置作为一种“分叉”......?我不完全理解嵌套重置的目的,有什么作用?
scala - 为什么定界延续原语被命名为“shift”和“reset”?
我想我理解(一般来说)什么shift
和reset
意思。但是我不明白他们为什么这样命名?shift
分隔延续原语与英语中的“移位”和reset
“重置”单词有什么关系?
scala - 重置块中的移位是否重要?
假设,有reset
一个单一的块shift
:
我shift
在 "do smth. 2" 或 "do smth. 3" 之后放置而不改变结果是否正确r
?shift
块中的位置无关紧要是否正确reset
?
haskell - 有人在 Haskell 中使用定界延续来进行 Web 开发吗?
是否有人在 Haskell 开发中使用分隔延续,特别是 Web 开发?我发现这个话题很吸引人,我需要一些比我一直在研究的更容易理解的东西。
以下是我到目前为止找到的资源:
谢谢!
-deech
scala - Scala:解释了定界延续 - 不是
对延续的概念感兴趣,我开始阅读 wiki、帖子,并来到这个“简单”的例子:
没有 Scala 的知识,我完全迷失在这里,无法弄清楚 8 是如何出现的。
以下是我试图弄清楚含义但失败的方法。哪位大侠可以给我一个简短的解释吗?是的,有 Scala 语法书,但它们太厚了,我对理解定界延续概念比掌握 Scala 语言更感兴趣......
(Int=>Int)
看起来像一个 C# 委托,输入是 Int,输出是 Int。
k: (Int=>Int) => k(7)
我在这里迷路了......什么是k,什么是(Int => Int)=> k(7)?
shift { k: (Int=>Int) => k(7) } + 1
更失落了……
reset { ...; shift { k: (Int=>Int) => k(7) } + 1 }
甚至越来越失落……
functional-programming - 了解多提示分隔延续的 API
用于多提示分隔延续的 API在 OCaml 中的分隔控制,抽象和具体系统描述一文中进行了描述。
我的问题涉及push_subcont : ('a,'b) subcont -> (unit -> 'a) -> 'b
. 为什么不是这种类型('a,'b) subcont -> 'a -> 'b
?此外,为什么子控件有单独的类型:为什么不简单('a,'b) subcont = 'a -> 'b
?我几乎可以肯定这是有充分理由的,因为 Oleg 使事情尽可能优雅(但不是更优雅)。
谢谢!
functional-programming - 如何将移位/重置转换为 delimcc?
我正在研究 Oleg 和 Asai 的“for dummies”论文的分隔延续(http://pllab.is.ocha.ac.jp/~asai/cw2011tutorial/main-e.pdf),但本文使用移位/重置形式代替Oleg 的 delimcc 中可用的提示内容。所以我有几个问题:
首先,什么是提示?又为什么是传中等shift
功能呢?知道什么是 subcont 也很好,但我愿意跳过它,因为我只是想通过论文。此外,它们之间有什么区别shift
以及它们在论文中shift0
如何对应shift
。
另外,reset
delimcc 里有什么?我的直觉告诉我,new_prompt
并且push_prompt
以某种方式对应于reset
. 但我也需要在这里澄清一下。
编辑:我能够从论文中翻译一个简单的例子,我的直觉证明是正确的。但是,我想对差异进行真正的解释,以及为什么 delimcc 是这样的。这是两个版本以防万一有人感兴趣
纸:
脱脂: