V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
vevlins
V2EX  ›  问与答

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

  •  
  •   vevlins · 2018-08-20 09:35:38 +08:00 · 1517 次点击
    这是一个创建于 2306 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我理解的 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 条回复    2018-08-20 14:35:07 +08:00
    vevlins
        1
    vevlins  
    OP
       2018-08-20 14:35:07 +08:00
    CPS 就是 `f :: a -> a 变换成 f_cps :: a -> ((a -> r) -> r);`。 问题终结
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3132 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 04:43 · PVG 12:43 · LAX 20:43 · JFK 23:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.