Cont 1 — intro (4:20)
Introducing continuations.
Cont 2 — representations (3:48)
Choosing a representation for continuations.
Cont 3 — interp (4:18)
Deriving the implementation interp with an explicit representation of continuations. See lambda-k.rkt.
Cont 4 — interp traces (4:10)
A look at the completed implementation of interp and continue by tracing calls to those two functions (which now togther implement interpretation).
Cont 5 — loops (7:02)
Loops as infinite recursion versus non-loop recursion that eventually runs out of space. To demonstrate an infinite loop, we work through a long trace of interp and continue calls.
Cont 6 — tail calls (4:10)
Recognizing loops versus space-bounded recursion syntactically.
Cont 7 — reliably eager (1:41)
Runnng our new interpreter in plai-lazy still implements an eager language. See lambda-k-u.rkt.