加载中...

延续传递风格(Continuation-Passing Style,CPS)是一种程序组织方式:每个函数额外接受一个"延续"参数——代表"接下来要做的全部计算"的函数;函数不通过 return 返回结果,而是把结果传给延续继续执行。
CPS 把隐式的控制流(返回、异常、跳转)全部显式化为函数调用,因此可以自然表达提前退出、异常处理、协程、回溯等复杂控制结构。Scheme 的 call/cc 能捕获当前延续,将其作为一等值任意保存与恢复。
编译器领域,CPS 变换是函数式语言编译的经典中间表示,使求值顺序与临时值全部显名,便于优化,与 SSA 形式存在对应关系。工程上,Node.js 早期的错误优先回调、各类异步回调 API 本质上就是手写 CPS;async/await 可视为编译器代劳的 CPS 变换。
优点是控制流表达能力极强;缺点是手写时嵌套深、可读性差(即"回调地狱"),通常交由编译器或语法糖处理。

登录 后参与讨论
暂无讨论,来发表第一条评论吧