问题标签 [continuation-passing]
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 - 嵌套 CPS “重置”
使用 Scala 2.8 的 CPS 编译器插件,有两个魔术控件reset
和shift
. 重置界定延续,移位捕捉延续。
有一个使用 CPS 和 NIO 的例子,使用嵌套重置作为一种“分叉”......?我不完全理解嵌套重置的目的,有什么作用?
mapreduce - MapReduce 是延续传递风格 (CPS) 的一种形式吗?
正如标题所说。我正在阅读另一种语言极客:延续传递风格,我有点想知道 MapReduce 是否可以归类为延续传递风格的一种形式,即 CPS。
我也想知道 CPS 如何利用多台计算机来执行复杂的计算。也许 CPS 可以更轻松地使用Actor 模型。
recursion - Ocaml 延续传球风格
我是 ocaml 的新手,并尝试编写一个延续传递样式函数,但很困惑我需要将什么值传递给 k 的附加参数
例如,我可以编写一个递归函数,如果列表的所有元素都是偶数,则返回 true,否则返回 false。
所以它就像
在 CPS 上,我知道我需要添加一个参数来传递函数,比如
但我不知道如何处理这个 k 以及这到底是如何工作的
例如对于这个偶函数,环境看起来像
lisp - 是否可以仅使用 LISP 原语来实现协程?
首先,我是 LISP 新手。
我想要的是一个协作的微线程特性。这可以通过协程获得。据我所知,Scheme 通过延续支持协程。然而,并不是所有的方案实施都可能有延续。如果是这样,我可以添加仅具有 LISP 原语的延续功能吗?
c# - c# 5.0 中新的异步特性如何用 call/cc 来实现?
我一直在关注有关async
c# 5.0 中新功能的新公告。我对延续传递风格和新的 c# 编译器对代码的转换有基本的了解,就像Eric Lippert 的帖子中的这段代码:
我知道有些语言通过 call-with-current-continuation ( callcc
) 原生地实现了延续,但我并不真正理解它是如何工作的或它究竟做了什么。
所以这里的问题是:如果安德斯等人。决定咬紧牙关,只callcc
在 c# 5.0 中实现而不是async
/await
特殊情况,上面的代码片段会是什么样子?
functional-programming - 是否有用于重写 CPS 的宏?
例如我有两个异步方法
但我想写类似的东西
haskell - 咖喱语言的 CPS
像 lambda calculus 或 Ocaml 这样的柯里化语言中的CPS有什么意义?从技术上讲,所有函数都有一个参数。假设我们有一个 CPS 版本的加法,用一种这样的语言:
我们称之为
这与以下内容相同:
我已经看到那里有两个不是尾调用的调用,实际上是一个复杂嵌套的表达式,它(cps-add random-continuation)
返回一个值,即一个消耗一个数字的函数,然后返回一个消耗另一个数字的函数,然后将两者的总和传递给那个random-continuation
。但是我们不能通过简单地将它再次转换为 CPS 来解决这个返回值,因为我们只能给每个函数一个参数。我们需要至少有两个来为延续和“实际”论证腾出空间。
还是我完全错过了什么?
functional-programming - 延续传球风格与单子
延续传递风格(cps)和单子有什么区别。
scheme - 计划中的延续传递风格?
我在 Wikipedia 上遇到了这段代码:
文章说该代码是另一段代码的继续传递版本:
但是,我很困惑:这甚至是如何工作的?你如何在这里将一个数字乘以一个 lambda?(* x x (lambda ...))