问题标签 [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.

0 投票
7 回答
24411 浏览

scala - 什么是 Scala 延续,为什么要使用它们?

我刚刚完成了 Scala 编程,我一直在研究 Scala 2.7 和 2.8 之间的变化。似乎最重要的是延续插件,但我不明白它有什么用处或它是如何工作的。我已经看到它对异步 I/O 有好处,但我无法找出原因。关于这个主题的一些更受欢迎的资源是:

还有这个关于 Stack Overflow 的问题:

不幸的是,这些参考资料都没有尝试定义延续的用途或移位/重置功能应该做什么,而且我还没有找到任何参考资料。我无法猜测链接文章中的任何示例如何工作(或它们的作用),因此帮助我的一种方法可能是逐行浏览其中一个示例。即使是第三篇文章中的这个简单的一篇:

为什么结果是 8?这可能会帮助我开始。

0 投票
1 回答
342 浏览

scala - 嵌套 CPS “重置”

使用 Scala 2.8 的 CPS 编译器插件,有两个魔术控件resetshift. 重置界定延续,移位捕捉延续。

有一个使用 CPS 和 NIO 的例子,使用嵌套重置作为一种“分叉”......?我不完全理解嵌套重置的目的,有什么作用?

0 投票
2 回答
1993 浏览

scala - 为什么定界延续原语被命名为“shift”和“reset”?

我想我理解(一般来说)什么shiftreset意思。但是我不明白他们为什么这样命名?shift分隔延续原语与英语中的“移位”和reset“重置”单词有什么关系?

0 投票
2 回答
1860 浏览

scala - Scala在运行时分隔延续错误

Scala 新手,我刚刚下载了 Eclipse 3.6.2 和Scala IDE 2.0.0-beta4(带有 Scala 2.9.0.final)。我创建了一个新的 Scala 项目来尝试分隔延续:

这编译得很好,然后我单击 Run as -> Scala application 并得到这个异常:

我究竟做错了什么?我错过了一些配置吗?

顺便说一句,我认为编译器推断出延续的类型?本文使用:

但这在我的环境中无法编译...

0 投票
2 回答
173 浏览

scala - 重置块中的移位是否重要?

假设,有reset一个单一的块shift

shift在 "do smth. 2" 或 "do smth. 3" 之后放置而不改变结果是否正确rshift块中的位置无关紧要是否正确reset

0 投票
3 回答
975 浏览

haskell - 有人在 Haskell 中使用定界延续来进行 Web 开发吗?

是否有人在 Haskell 开发中使用分隔延续,特别是 Web 开发?我发现这个话题很吸引人,我需要一些比我一直在研究的更容易理解的东西。

以下是我到目前为止找到的资源:

谢谢!

-deech

0 投票
2 回答
1497 浏览

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 }

    甚至越来越失落……

0 投票
1 回答
277 浏览

functional-programming - 了解多提示分隔延续的 API

用于多提示分隔延续的 API在 OCaml 中的分隔控制,抽象和具体系统描述一文中进行了描述

我的问题涉及push_subcont : ('a,'b) subcont -> (unit -> 'a) -> 'b. 为什么不是这种类型('a,'b) subcont -> 'a -> 'b?此外,为什么子控件有单独的类型:为什么不简单('a,'b) subcont = 'a -> 'b?我几乎可以肯定这是有充分理由的,因为 Oleg 使事情尽可能优雅(但不是更优雅)。

谢谢!

0 投票
1 回答
1055 浏览

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

另外,resetdelimcc 里有什么?我的直觉告诉我,new_prompt并且push_prompt以某种方式对应于reset. 但我也需要在这里澄清一下。

编辑:我能够从论文中翻译一个简单的例子,我的直觉证明是正确的。但是,我想对差异进行真正的解释,以及为什么 delimcc 是这样的。这是两个版本以防万一有人感兴趣

纸:

脱脂:

0 投票
3 回答
1020 浏览

scala - 我应该使用什么类型参数来使 List.map 与分隔的延续一起工作?

我基本上遵循Scala API 页面上给出的用于分隔延续的示例。下面的代码工作正常:

但是,当我修改go为以下内容时:

我收到此错误:

添加Any为第二种类型参数没有帮助。知道我应该提供什么类型吗?