First, an advertisement. I’m graduating in a year, and want to either start as a postdoc or join industry, ideally in or near the US Northeast.
There are a ton of posts here about ICFP, so let me just point out a couple of the talks that meant something to me in particular.
François Pottier presented Visitors Unchained, a very pragmatic library for representing and traversing ASTs that correctly deals with binders.
Jean-Philippe Bernardy presented a pretty printer. I noticed because I am writing a tree editor for fun, and pretty-printing is central to tree editors. What stood out about his approach was actually grounding his work in properties that human users care about. I try to do this in my own work, and wish I saw it more in others. As a result, his pretty-printer is even prettier than Phil Wadler’s famous “prettier printer”. I now plan to use Jean-Philippe’s algorithm.
Andrey Mokhov presented the Functional Pearl Algebraic Graphs with Class. It was a well-written pearl, but what stood out for me was learning that graphs can be represented algebraically. Instead of the usual definition we’ve heard a thousand times — a (directed) graph is a set of vertices V, together with a set of edges (V, V) — a graph can be defined by three operations:
empty - the empty graph vertex i - make a single vertex x + y - union two graphs x and y x * y - union two graphs x and y, and also add directed edges from V(x) to V(y)
that obey the properties of a semiring, with an additional law that
xyz = xy + yz + xz
It is just a very beautiful representation.