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

c# - amb-operator 的非确定性选择

是否可以在 C# 中实现McCarthy 的amb-operator以进行非确定性选择?

显然 .NET 缺乏持续支持,但yield return可能很有用。这在 F# 等其他静态 .NET 语言中是否可行?

0 投票
4 回答
1937 浏览

scheme - 通话/抄送的细节

这与什么是呼叫/抄送有关?,但我不想为了自己的目的劫持这个问题,并且它的一些论点(例如与 setjmp/longjmp 的类比)回避了我。

我想我对什么是延续有足够的了解,我认为它是当前调用堆栈的快照。我不想讨论为什么这可能很有趣,或者你可以用延续做什么。我的问题更具体地说,为什么我必须为 call/cc 提供函数参数?为什么 call/cc 不只返回当前的延续,所以我可以用它做任何我想做的事情(存储它,调用它,你命名它)?在另一个问题的链接(http://community.schemewiki.org/?call-with-current-continuation-for-C-programmers)中,它谈到“本质上这只是一种让您继续的干净方式并避开后续跳回保存点的方式。”,但我不明白。这似乎是不必要的复杂。

0 投票
7 回答
11265 浏览

functional-programming - Clojure 中的延续

我在某处读到 Rich Hickey 说:

“我认为延续在理论上可能很整洁,但在实践中却不是”

我不熟悉clojure。
1.clojure有延续吗?
2.如果没有,你不需要继续吗?我已经看到了很多很好的例子,尤其是这个家伙。什么是替代方案?
3. 如果有,是否有文件?

0 投票
2 回答
1648 浏览

jetty - 什么是“Jetty 6 Continuations”,它们与编程语言中的 continuation 相比如何?

我正在寻找一个描述 Web 服务器与编程语言中的“延续”机制的答案。

我的理解是,使用延续,让“pi 的位数”​​生产者与“pi 的位数”​​消费者进行通信是微不足道的,而无需显式线程。

我听说过关于 Jetty 延续的好消息。我很好奇别人怎么想。

我可能已经找到了答案,但无论如何我还是在这里问这个问题 - 记录在案。

0 投票
3 回答
337 浏览

monads - 纯函数式编程语言中的副作用方法

目前,我知道将副作用集成到纯函数式编程语言中的以下方法:

  • 效果系统
  • 继续
  • 独特的类型
  • 单子

单子经常被认为是最有效和最通用的方法。

还存在哪些其他方法?他们如何比较?

0 投票
10 回答
5203 浏览

c# - 协程的替代设计模式

目前,我有大量 C# 计算(方法调用)驻留在将按顺序运行的队列中。每个计算都将使用一些高延迟服务(网络、磁盘......)。

我打算使用 Mono 协程来允许计算队列中的下一个计算继续,而前一个计算正在等待高延迟服务返回。但是,我更喜欢不依赖 Mono 协程。

是否有可以在纯 C# 中实现的设计模式,使我能够在等待高延迟服务返回时处理额外的计算?

谢谢

更新:

我需要执行大量 (>10000) 任务,每个任务都将使用一些高延迟服务。在 Windows 上,您无法创建那么多线程。

更新:

基本上,我需要一个设计模式来模拟 Stackless Python ( http://www.stackless.com/ )中 tasklet 的优点(如下)

  1. 大量的任务
  2. 如果一个任务阻塞了队列中的下一个任务执行
  3. 不浪费 CPU 周期
  4. 任务之间的最小开销切换
0 投票
1 回答
315 浏览

c# - Mono Continuations - 在 store() 之后内存不断增加

这是 Mono Continuations 的 continuation_store (...)。通过查看下面的代码,似乎 store() 遵循这两个分支:

  1. cont->saved_stack && num_bytes <= cont->stack_alloc_size
    • 直接使用内存
  2. 别的
    • gc 释放已使用的内存,并创建一些新内存。

然而,奇怪的是,如果我反复使用 continuation_store(),内存使用量会增加,直到在后面的步骤中完成一个巨大而滞后的 GC 操作。谁能解释为什么会这样?

谢谢

0 投票
11 回答
17357 浏览

java - Java 中的延续

Java中是否有一个很好的延续实现?

如果是这样,开销是什么样的?JVM 在设计时并没有考虑到这些事情,对吧?那么这种做法是不是逆天了呢?

0 投票
7 回答
941 浏览

ruby - 头等舱延续的缺点

针对将延续暴露为一流对象的一些批评是什么?

我觉得有一流的延续很好。它允许完全控制指令的执行流程。高级程序员可以为某些类型的问题开发直观的解决方案。例如,延续用于管理 Web 服务器上的状态。语言实现可以在延续之上提供有用的抽象。例如,绿色线程。

尽管如此,是否有反对头等舱延续的强烈论据?

0 投票
7 回答
24411 浏览

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

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

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

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

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