ICFP 2017

This year I finally made it to ICFP after years of wanting to go. Here are notes on a few of the talks I was most interested in.

Type-Directed Diffing of Structured Data

This paper presents an idea I've been very excited about -- describing transformations between algebraic data types rather than the tradition diff approach of comparing textual representations line-by-line.

Some thoughts:

Ringads and Foldables -- James McKinna

As an aside mentioned James Quantified Class Constraints. The introduction of this paper is an easy read, mostly historical. A few highlights:

And (Higher Order) Hereditary Harrop Formulas:

Hereditary Harrop formulas are an extension to Horn clauses in which the body of clauses can contain implications and universal quantifiers... We have designed and built a logic programming system which implements hohh in much the same way Prolog implements first-order Horn clauses. This language and its interpreter, collectively called λProlog, will be described.

As far as the main idea of the talk, James proposes the following:

There's of course a lot more to it, but for that I'll direct you to James' abstract.

Staged Generic Programming -- Jeremy Yallop

This piqued my interest as I've been doing a lot of generic programming. Abstract:

Generic programming libraries such as Scrap Your Boilerplate eliminate the need to write repetitive code, but typically introduce significant performance overheads. This leaves programmers with the regrettable choice between writing succinct but slow programs and writing tedious but efficient programs. Applying structured multi-stage programming techniques transforms Scrap Your Boilerplate from an inefficient library into a typed optimising code generator, bringing its performance in line with hand-written code, and so combining high-level programming with uncompromised performance.

Great paper.

Generic Functional Parallel Algorithms: Scan and FFT / Compiling to Categories -- Conal Elliott

To me this was some of the most impressive work at ICFP. The common thread seems to be tooling to compile functional programs to hardware. As always, Conal does it in the most elegant way possible, and explains his work very well.

GHC Core and Linear Logic should be best friends

Carter and I presented at the Haskell Implementor's Workshop on some work we've done related to modeling financial contracts. The talk had ~~three~~ four main themes, as I see it: