形式陈述
在表达式某个求值点,续延描述“取得当前结果后剩余的全部计算”。若当前上下文期望一个 call/cc 可把当前续延重化为一等值;不同系统还区分受限/无界、一次性/可重复调用的续延。
直觉
普通调用栈隐含保存“下一步做什么”;续延把这段未来直接当作数据和函数暴露出来。
例子与边界
表达式 1 + (2 * □) 中,孔处结果
推论与应用
CPS 用于编译控制流、尾调用、异常、协程、生成器和异步程序,也让求值顺序显式化。续延语义连接操作语义、指称语义与控制逻辑。
参考资料
- Robert Harper, Practical Foundations for Programming Languages, 2nd ed., Cambridge University Press, 2016,Chs. 27–30, continuations and control。
- Glynn Winskel, The Formal Semantics of Programming Languages, MIT Press, 1993,Chs. 7–10, continuations and semantic transformations。