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. about this event: bob2021-how-i-design-programs-gibbons