18.1.06

Penn, PADL, POPL, and Plan-X

I spent 5-15 January visiting U Penn and attending PADL, POPL, and Plan-X in Charleston, SC.

At U Penn I served on the thesis committee for Vladimir Gapayev, a student of Benjamin Pierce, on the design and implementation of Xtatic, an extension of C# to support XML processing in the style of Xduce. This is one of the few doctoral examinations I have been involved with where the committee agreed to tick off the very first box on the form: absolutely no substantial revisions required. Well done, Vladimir! I also had many interesting discussions, notably with Benjami, Geoffrey Washburn, and Steve Zdancewic, and a great dinner at Django.

At PADL I delivered an invited talk on Links. The audience had scores of useful suggestions afterward; notably Zoltan Somogyi and Manuel Hermengildo suggested I look at updatable predicates in the logic programming community as an approach to integrating database update with a declarative language. My favorite presentations included Steve Kollmansberger on Modeling Genome Evolution with a DSEL for Probabilistic Programming, Kris De Volder on A Generic Code Browser with a Declarative Configuration Language, Zoltan Somogyi on several new twists in the implementation of Mercury, and Erik Meijer's invited talk on LINQ.

Then it was on to POPL. Tim Sweeney, founder of Epic Games, gave a fascinating talk on "The next mainstream programming language: a game developer's perspective". Matthias Felleisen categorized it as "an advertisement for Haskell". This talk reiterated a point I head John Hennessy make when he picked up an honorary degree at Edinburgh: the advent of multicore hardware has made concurrency (and hence functional programming) immensely more important. Sweeney noted that most of the processing in a game is rendering, which can be viewed as purely functional. But there are also about 10,000 objects interacting, which are best treated imperatively. What I found most surprising is that communicating processes (as in, say, Erlang) would not work well for objects in a game: one needs transactions to ensure that when one character transfers hit points or momentum to another that nothing is lost (just as one needs transactions to ensure that when one bank account transfers money to another that nothing is lost).

My other favorite talks were Yitzhak Mandelbaum (with Kathleen Fisher and David Walker) on The Next 700 Data Description Languages; Nils Anders Danielsson (with Jeremy Gibbons, John Hughes, and Patrik Jansson) on why Fast and Loose Reasoning is Morally Correct; and Cormac Flanagan on Hybrid Typechecking.

Erik Meijer posed me the problem of how to integrate groupBy neatly into a list comprehension. I think I found a neat answer based on "Theorems for Free". Watch this space!

Charleston is a lovely city, and I did not see enough of it. It has some fine restaurants: Fig is very good, and Cordavi is superb.

Finally, there was Plan-X. My favorite talk was Alain Frisch on "Ocaml+Xduce", a clever way to integrate Xduce typing into the Ocaml compiler with minimal changes. Other favorites were Mary Fernandez (with Kathleen Fisher, Robert Gruber and Yitzhak Mandelbaum) on PADX (a follow up to the "Next 700" paper) amd Vladimir Gapeyev, François Garillot and Benjamin Pierce on "An Xtatic Experience", a practical example based on Michael Kay's XMLSpec example program for XSLT. This paper covers some of the most interesting results in Vladimir's thesis, taking this entry full circle!