JS 回调函数、thunkify 与 CPS 变换的关系

2018-08-20 09:35:38 +08:00
 vevlins

我理解的 CPS:

CPS 的本质是不返回一个值,而是把值作为参数传递给下一个函数,形成一个流式的调用链。

1.callback 是不是一种 CPS 变换呢?

2.CPS 在形式上有要求吗?

 2.1 必须通过尾调用才是 CPS 吗
 2.2 只有 thunkify 化的才是 CPS 吗?

在一篇文章中看到这样一种说法:

在 node.js 中, 所有原本可能阻塞的操作全部都接受一个 callback, 当请求完成的时候调用 callback. 这种通过 callback 进行异步编程的风格是不完全的 CPS, callback 可以看成 continuation.

这段话的意思是 callback 只实现了 continuation,而没有实现 passing 吗?

1450 次点击
所在节点    问与答
1 条回复
vevlins
2018-08-20 14:35:07 +08:00
CPS 就是 `f :: a -> a 变换成 f_cps :: a -> ((a -> r) -> r);`。 问题终结

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/481309

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX