Delimited and Composable Continuations in PLT Scheme
Many programmers outside of the hard-core functional-programming world now see the value of “continuations” as a programming-language construct. In particular, first-class continuations can simplify the implementation of services that are accessed through a web browser.
As it turns out, “delimited continuations” are an even better fit for such applications. Unfortunately, even languages that directly support continuations have not provided good support for delimited continuations. PLT Scheme is now the exception, providing direct support that meshes with existing language constructs, such as exception handling and dynamic binding.
To describe PLT Scheme’s design for delimited continuations, this talk starts with a graphical intuition for computation and continuations. The graphical notation makes clear why delimited continuations are useful, and it lets us explain precisely—without resorting to technical notation—how delimited continuations interact with other control constructs in Scheme.
Matthew Flatt is a computer scientist, currently teaching at the University of Utah (Salt Lake City). He is also a member of PLT and, as such, responsible for the creation and maintenance of MzScheme and DrScheme. Flatt received his PhD at Rice University under the direction of Matthias Felleisen. His dissertation is on the mechanics of first-class modules and mixin classes. His work triggered research in the ML community on mutually recursive modules and in the object-oriented community on mixins and traits.Currently Flatt serves as one of four editors of the Revised Report on the Scheme programming language. The report is highly influenced by his design of PLT Scheme, especially the module system, the exception system, the record system, the macro system, and library links. Flatt’s presentations are well known in the functional programming community for their executable and meta-circular nature. He is known to implement his presentations as PLT Scheme programs and to demonstrate this fact by executing the talk on the talk or for creating the talk during the talk.
- Matthew Flatt
- University of Utah