Home >>
ICFP 2017
Sun 3 - Sat 9 September 2017 Oxford, United Kingdom

filter(JustinPombrio, ICFP)Sat 9 Sep 2017

Shameless Plug

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.

My primary research area is in syntactic sugar. But I have also done (or supervised) research in JavaScript semantics, crowdsourcing language design, and non-semantics-preserving program transformations (the blasphemy!).

See my CV


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.

Visitors Unchained

François Pottier presented Visitors Unchained, a very pragmatic library for representing and traversing ASTs that correctly deals with binders.

A Pretty but not Greedy Printer

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.

Algebraic Graphs with Class

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.