Playlist | schedule page slides as PDF |
Continuation 1 — to-do lists (4:34)
Introducing continuations as a language implementation’s way of keeping track of what to do next.
Continuation 2 — representations (3:51)
Choosing a representation for Moe continuations.
Continuation 3 — interp (6:25)
Deriving the implementation interp with an explicit representation of continuations. See lambda-k.rkt.
Continuation 4 — interp traces for plus (3:17)
A look at the implementation of interp and continue so far by tracing calls to those two functions (which now together implement interpretation).
Continuation 5 — interp traces for calls (4:59)
A look at the fun and application cases of interp and continue, including tracing calls on another example.
Continuation 6 — loops (5:17)
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.
Continuation 7 — tail calls (4:59)
Recognizing loops versus unbounded-space recursion syntactically.
Continuation 8 — reliably eager (1:28)
Running our new interpreter in lazy Shplait still implements an eager language.