Continuation-passing style, defunctionalization, accumulations, and associativity - Gibbons, J (AOSA, Inc., 2021)
Context: Reynolds 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 other programming tricks, including zippers and accumulating parameters.