

PFPL 笔记 - X Exceptions and Continuations
笔记 10 异常和 continuations
该章节由我在 PL 读书会上讲解。 Presentation slides: pfpl-10.pdf
Control Stack
第一章给出了 Control Stack 的概念,记录当前 evaluation context 的栈
k▹e 表示当前栈 k 将要计算一个表达式 e, 而 k◃v 表示当前栈 k 将要返回一个值 v.
Exceptions
Exceptions 被定义为一种特殊的 value,当一个 exception 被抛出时,当前的 control stack 会被一路弹栈,并且寻找最近的 handler 来处理这个 exception.
Continuation
Continuation 是允许我们直接捕获和复制当前的 control stack,把 stack k 变成一个 first-class 的值 kcont.
call/cc
call/cc
是一个高阶函数,接受一个函数作为参数,这个函数接受一个 continuation 作为参数,并且返回一个值.
(call/cc (lambda (k) e))
call/cc
本质上就是书中介绍的 letcc k in e
,它会把当前的 control stack 捕获并且传递给参数函数.
Practical Foundations for Programming Languages