Functional programming is full of “folk tricks” that
seem inscrutable to novices. Many of them can be traced back to John
Reynolds, who showed us how to use continuation-passing style and
defunctionalization to transform a recursive interpreter for a
language into an abstract machine for programs in that language. The
same techniques explain zippers and accumulating parameters. Buried
within all those applications there is usually a hidden appeal to the
algebraic property of associativity. In this talk, Jeremy Gibbons will entice
associativity out of the shadows and into the limelight.