问题标签 [continuation]

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 投票
1 回答
513 浏览

scheme - 使用方案的延续

所以我认为我了解延续在 Scheme 中的基本工作原理,但我无法弄清楚如何使用它而不是递归。

我们得到了 make-matcher 的工作代码(只是基本的模式匹配),它已经完成了我们想要的一切。您给它一个模式,它会为您创建一个匹配器,您可以使用它在片段中搜索该模式。匹配器接受一个接受器,将它的结果提供给它,如果结果不被接受,它会递归地下降到片段的下一部分并继续前进。

现在,我们要做的基本上就是修改它以使用延续而不是接受器。它返回后缀(从不匹配的模式中留下的东西)和一个延续,所以像

会给我们后缀和函数回溯,我们可以调用以继续前进。

所以供参考,原始代码

因此,让我们以 or-matcher 为例。目前,如果它找到匹配项,它会将结果提供给接受者,如果接受者不喜欢这个结果,它会继续寻找下一个可能的答案。如果我想使用延续,我将不得不在它找到结果后强制它退出并使用 call/cc 来存储程序的当前状态。我只是……不完全确定我应该把逃生和呼叫/抄送放在哪里。我想我现在需要添加一个基本案例,因为我没有接受者告诉我我的答案是对还是错,但是......

我想如果有人只是给我一些关于要进行的主要更改的指示,我可能会弄清楚。我当时了解 WHAT 的各个部分,但无法完全了解如何实现它。

0 投票
2 回答
726 浏览

php - PHP 嵌套循环回显不能换行

这是我的代码段:

但是,它不起作用。我希望循环内的两个 echo 语句继续,而不是换行。我该如何解决?

0 投票
4 回答
2034 浏览

c# - 在延续链中传播异常的正确方法是什么?

在延续链中传播异常的正确方法是什么?

0 投票
1 回答
2187 浏览

azure - Windows Azure 存储表中的事务和延续令牌

在 Azure 存储表中检索 1200 个实体时触发了多少事务,并牢记延续令牌。

我已经读到“Windows Azure Tables 在单个请求中最多返回 1000 个实体,并在有更多结果(剩余 200 个实体)可用时返回一个继续令牌。” 请参阅(http://blog.smarx.com/posts/windows-azure-tables-expect-continuation-tokens-seriously)。

因为 Azure 是根据编号收费的。我们通过云执行的交易;我只想知道:在第 1000 个实体(行)结果之后返回 1200 个实体(行)和一个延续令牌的单个请求将执行多少个事务?

0 投票
1 回答
1382 浏览

java - Jetty - 检测断开连接的客户端(续)

我正在使用带有 Continuations 的 Jetty 来实现长轮询,但我看不到检测客户端断开连接的方法。

我知道在第一次运行(创建延续)和任何后续运行之间的时间里,由于 HTTP 的性质,客户端和服务器之间可能没有流量,但我可以解决只是能够检测到客户端正在尝试发回消息时断开连接(服务器调用继续)。

我一直在试图找到一种方法来检测作者实际上并没有写信给客户,但我似乎找不到。

0 投票
0 回答
160 浏览

scala - 如何在maven中使用akka数据流

我在使用数据流时遇到了问题。如果我在 maven scala 插件配置中启用延续,maven 无法编译。

在我启用 maven 中的延续后,编译开始失败。并且错误信息非常混乱。

像这样:

发现:单位@scala.util.continuations.cpsSynth @util.continuations.cps[scala.concurrent.Future[Any]]

要求:单位

或这个:

找到 : ((Class[_ <: Indexed[String]], scala.concurrent.Promise[List[_ <: Indexed[String]]])) => (Class[ $1(in value $anonfun)], List[ <: Indexed[String]]) @scala.util.continuations.cpsSynth @util.continuations.cps[scala.concurrent.Future[Any]] forSome { type _$1(in value $anonfun) <: Indexed[String] }

必需: ((Class[_ <: Indexed[String]], scala.concurrent.Promise[List[_ <: Indexed[String]]])) => B

所有这些错误都发生在关闭时。似乎闭包不能在流上下文中使用。

有谁知道为什么?

错误代码:

0 投票
1 回答
95 浏览

functional-programming - 方案延续异常行为

这是我的代码。当我调用 continuation 两次时,我希望"world"显示两次。但它只输出一次。我错过了什么?

0 投票
1 回答
251 浏览

f# - Delay 如何在 continuation monad 中准确地工作以防止 stackoverflow?

这是一个参考问题:StackOverflow in continuation monad
,我和他玩了一点,需要一些澄清。

1)我想这是:

使计算工作流中的行为在这些之间产生如 toyvo 所示的差异:

所以我不完全明白什么是诀窍,什么时候
(fun c -> map xs c)只是不同的符号(map xs)

2)推理问题。- 在 OP 的第二个地图示例中,我发现它由于v值的推断问题而无法编译,因为它推断fa -> b list,而不是所需的a -> b。为什么它以这种方式推断?万一let v = f x它会很好地推断出来。

3)在我看来,VS 在工具提示中显示了不准确的类型签名:monad 的 Return 的返回类型为:('e->'f)->f,而 Bind 的返回类型仅为'c->'b。- 似乎它('e->'f)c在 Bind 情况下简化,或者我在这里遗漏了什么?

谢谢你的澄清,
托马斯

编辑 - 测试转储:

map_fixed:
地图 [1; 2]地图[2]地图[]cBind[]地图[]cBind[3]地图[2]地图[]cBind[]地图[][2; 3]

地图:
地图[1;2]地图[2]地图[]cBind[]cBind[3][2; 3]

编辑问题2:

0 投票
4 回答
334 浏览

haskell - 让 IO 成为 MonadCont 的实例有意义吗?

显然MonadConts 比普通Monad的 s 更受限制并且提供更多的权力,这要归功于它的callCC. 这意味着它的实例更少,你可以用它做更多的事情。

查看 的已定义实例时MonadCont,看起来那里列出的所有内容都需要一个ContContT一个已经存在的MonadCont实例。这意味着我们必须从一些开始,Cont或者ContT特别是不能IO变成MonadCont.

callCC但是,我认为在上下文中使用是有意义的IO,因此我们可以简化以下内容(根据官方 Hackage 页面 callCC示例进行调整):

进入

callCC更清洁的方式在 do 块中使用。

当然,要创建IO一个实例,MonadCont我们必须有一些魔法,因为callCCfor 的IO意思是“调用给定的函数,未来的计算指定现实世界中接下来会发生什么”,所以只有解释器或编译器才能真正知道这意味着什么. 另一方面,我没有看到任何理论上的理由表明这是可导入的,因为 Scheme 已经拥有它很长时间了,并且制作这样一个实例根本不需要更改语言。

可能的问题

我能想到的一个因素是 的语义callCC与适当的清理保证相冲突。许多语言都提供了“try...finally”控制以进行适当的清理,C++ 的析构函数也保证了这一点。我不确定 Haskell 中它是什么,但如果callCC可以IO使用它来逃避任何IO需要清理的相关上下文,因此提供 sush 保证将变得不可能,正如您可以看到Ruby 中发生的那样

意见讨论

@jozefg 的回答非常好。我只想在这里写下我的看法。

  1. 确实MonadCont来自mtl。但这并不意味着 GHC 或其他编译器不能定义 aunsafeCallCC并定义实例,如果MonadCont正确的定义在编译模块的范围内-XIOMonadCont并被设置。

  2. 我已经谈到了异常安全,看起来很难确定这一点。但是,Haskell 已经有了,在我看来unsafePerformIO,这基本上比 更不安全。unsafeCallCC

  3. 在大多数情况下,原因callCC是过于强大,应尽可能避免。但是,在我看来,延续传递风格可以用来使惰性求值显式化,这有助于更好地理解程序,从而更容易找到可能的优化。当然 CPS 不是MonadCont,但使用它并将深层嵌套的内部函数转换为 do 表示法是一个自然的步骤。

0 投票
1 回答
1682 浏览

java - Jetty、DefaultServlet、BlockingCallback 和 TimeoutException 问题

我正在运行一个由 Jetty 9.1.0.RC1(独立发行版)提供支持的在线应用程序。

我的日志文件被提供静态内容(.js、.css、.png 文件等)时随机发生的以下问题填满:

这同样适用于以下资源:

我正在使用 servlet 3.0。有两个 DefaultServlet 的实例,一个来自 webdefault.xml,另一个来自 web.xml,用于提供用户图像(不与 .war 文件捆绑)。

前者 DefaultServlet 的配置没有修改,后者如下:

我花了过去 3 天的时间试图弄清楚这件事,但仍然被卡住了。我没有在应用程序的任何地方显式使用延续。

该问题仅在码头(重新)启动后几天出现。

任何线索在哪里寻找答案?似乎我已经用尽了所有可能的选择。

亲切的问候,

迈克尔·齐斯科夫斯基