我理解的 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 吗?
1
vevlins OP CPS 就是 `f :: a -> a 变换成 f_cps :: a -> ((a -> r) -> r);`。 问题终结
|