|Playlist||schedule page slides as PDF|
Continuation 1 — to-do lists (3:59)
Introducing continuations as a language implementation’s way of keeping track of what to do next.
Choosing a representation for Curly continuations.
Continuation 3 — interp (5:05)
Deriving the implementation interp with an explicit representation of continuations. See lambda-k.rkt.
A look at the implementation of interp and continue so far by tracing calls to those two functions (which now togther implement interpretation).
A look at the lambda and application cases of interp and continue, including tracing calls on another example.
Continuation 6 — loops (4:33)
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.
In case you don't like the sped-up portion of the video, a variant that keeps the steps slow is available here.
Continuation 7 — tail calls (4:28)
Recognizing loops versus space-bounded recursion syntactically.
Runnng our new interpreter in lazy Plait still implements an eager language.