问题标签 [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 投票
4 回答
3401 浏览

scala - 生成器/块到迭代器/流的转换

基本上我想转换这个:

到 Stream (dataToStream 是进行此转换的假设函数):

我想这个问题可以通过延续来解决:

谢谢,大卫

0 投票
2 回答
3098 浏览

lisp - 只能使用 lambdas 和闭包来实现 call-with-current-continuation 吗?

有谁知道是否call/cc可以仅使用 lambda 和闭包来实现?

似乎call/cc中断了程序的流程(如异常),但 lambdas 和闭包不能这样做。因此我认为call/cc不能通过 lambdas 和闭包来实现。

还有什么想法吗?

0 投票
1 回答
380 浏览

ruby - Ruby 中 Scheme 的 dynamic-wind 等价物

Ruby 有延续......它有dynamic-wind类似Scheme的构造吗?

0 投票
1 回答
225 浏览

tree - 使用 SML 中的成功延续查找 BST 中满足 f 的所有元素

我有一项任务要做,但我不知道如何做一个问题。这是我必须做的:

编写一个函数,收集树 T 中满足属性 p 的所有元素并返回它。依次遍历树。使用成功延续找到 BST 中满足 f 的所有元素。

我做了以下事情:

我不明白为什么它不起作用...

0 投票
2 回答
979 浏览

scala - Scala 延续的用途

人们如何在 Scala 中使用更大和更小规模的延续?

Scala 标准库的任何部分都是用 CPS 编写的吗?

使用延续是否有任何重大的性能损失?

0 投票
1 回答
430 浏览

python - 沙盒和无堆栈python?

我需要一种脚本语言来描述非常复杂的工作流程。

  • 每当需要用户输入时,这些工作流程都需要暂停,并在输入后恢复(可能几个月后)。似乎来自 Stackless 的可序列化延续将是一个不错的选择。

  • 用户还需要能够自己编辑工作流。我不确定序列化的延续将如何处理底层代码更改。我想我可能需要将 Git 版本哈希与延续一起保存,并且只在不需要状态的检查点“升级”延续。

  • 我更喜欢 Python 语法,因为可读性是一个非常高的优先级,而动态特性是关键。不过,我愿意接受建议。

  • 最终,我可能会编写一个可视化的流程图编辑器来操作底层代码。

我深入研究了 Stackless 和 PyPy。Stackless 似乎没有提供任何沙盒的承诺,而 PyPy 似乎同时提供了 stackless 和沙盒,但我找不到任何提及同时拥有两者的内容。

有什么解决办法吗?如果那里有专家可以让我找到一个好的解决方案,我有一个贝宝帐户,我愿意使用它。

0 投票
1 回答
346 浏览

scope - 计划继续在奇怪的地方重新启动

更新:

所以问题似乎出在生成器上,不一定与下一个令牌和前瞻功能有关。我在 set!s 发生的地方添加了一些显示调用,发现问题是在第二次调用 (generate-token) 之后,它从第一次调用的位置恢复执行。

这是程序的完整代码(我在下面留下了原始帖子以供参考):

按照下面原始帖子中的第一个示例执行下一个令牌和前瞻调用会产生:

我不知道为什么它会这样,但我承认我是新手,可能不完全理解后果。任何帮助,一如既往,将不胜感激。

谢谢。

原帖如下:


我创建了一个生成器,它解析一个文本文件并以字符串的形式一次返回一个令牌。所以,如果我有一个文件包含

对 (generate-token) 的连续调用分别返回“这些”“是”“我的”……。这似乎有效,但是我将其作为解析器的一部分编写为更大的任务。生成器似乎工作顺利,但是当我正在构建一个 LR(1) 解析器来解析令牌流时,我需要能够执行前瞻。为此,我创建了以下程序:

但是,这些并没有按预期工作。我的印象是方案(这是用drRacket编写的,但使用#lang r5rs)按值传递对象,所以(字符串复制调用假设是不必要的,但这仍然不能按预期工作。它像这样工作:

在不同的流程中,如果首先调用 (lookahead),则它可以正常工作。

如果有人对正在发生的事情有任何线索,任何见解将不胜感激。披露:这是学校作业,但我不是要你为我做这件事>.>。

0 投票
1 回答
473 浏览

scala - scala分隔的继续输入

我仍在弄清楚这里涉及的确切打字规则/含义。

如果示例中的类型“足够简单”以“适合”,就像几乎所有简单示例中的情况一样,这似乎更容易/更容易,但是在将事物与打字进行比较时变得更加有趣/困难(至少对我而言)由 tiark rompf 给出:

所以结果[|e|].map( (x: A) => {[|r|]} )将具有Shift[U,B,C]根据tiark论文中给出的map定义的类型。

这里 U 不一定与 B 相同。

到目前为止,我不明白为什么 U 被允许与 B 不同,而没有像 U <: B 在 tiark 的论文中的 map 定义中给出的东西。

我在这里分别错过了什么?

任何提示/想法?

0 投票
1 回答
175 浏览

multithreading - Scheme中线程和延续之间交互的信息和示例?

我一直在不同的方案实现(Gambit、Gauche 和 Chicken)中使用 SRFI 18,我想知道在哪里可以找到关于在线程内使用延续时可能出现的问题的 dpcumentation/tutorials/信息?我想有很多问题,比如如果一个线程调用由另一个线程捕获的延续会发生什么——无论是内部还是外部dynamic-wind,等等。

不仅仅是规范(如 SRFI 本身),还有提示和代码示例,以及在通常的程序中如何处理这些问题的示例。

某处有类似的东西吗?

0 投票
1 回答
157 浏览

functional-programming - 是否有用于重写 CPS 的宏?

例如我有两个异步方法

但我想写类似的东西