Multi-return Function Call

Looking for PhD advisors, I recently read Olin ShiversMulti-return Function Call. It’s a really remarkable paper, with all of the attributes of a PL classic. It:

  1. Proposes a small syntactic extension to the lambda calculus.
  2. Gives an intuition for how it works and some equivalent, lambda-only constructions.
  3. Gives an operational semantics.
  4. Proves the soundness and completeness of a simple type system.
  5. Proves the soundness and completeness of a parametrically polymorphic type system.
  6. Designs and proves correct several optimizations for this construct.
  7. Lists compelling use cases for the new extension.
  8. Provides an evaluation of the extension as applied to one of those use cases.

I’ve seen a lot of papers which are only the first three, or perhaps four or five. But the last three items are the real kicker. They show that Shivers is really grounded, that he’s not just rambling about Foozles, but is interested in making programming languages better.

If there’s any problem, it’s his writing and way of explaining. Shivers has worked alone a lot, for some unsurprising reasons, so his prose clearly reflects a single person’s thoughts. On the one hand, this makes reading his work a little difficult; on the other, it’s probably the source of a lot of his creativity and incision.

* Filed by Michael Greenberg on 2006-10-01 at 2:02am under Programming Languages
* 2 Comments

a weasel in a hat

2 Responses to “Multi-return Function Call”

  1. June 10th, 2008 | 10:20am

    I realized that I mis-cited this paper as being written by Olin Shivers. It is in fact written by Olin Shivers and David Fisher. Still, good stuff: this paper remains a favorite.

  2. me
    October 22nd, 2012 | 11:53am

    I found, and liked this paper by searching for “multiple returns function” and it was exactly what I wanted. I’m not entirely convinced that we should unify ifs and multiple return points, but I’m still digesting.

Leave a reply

Please submit only once. Comments are moderated and will not appear immediately.