DeepAI AI Chat
Log In Sign Up

Continuation-Passing Style, Defunctionalization, Accumulations, and Associativity

by   Jeremy Gibbons, et al.

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. Inquiry: Buried within all those applications there is usually a hidden appeal to the algebraic property of associativity. Approach: Our purpose in this paper is to entice associativity out of the shadows and into the limelight. Knowledge: We revisit some well-known applications (factorial, fast reverse, tree flattening, and a compiler for a simple expression language) to spotlight their dependence on associativity. Grounding: We replay developments of these programs through a series of program transformations and data refinements, justified by equational reasoning. Importance: Understanding the crucial role played by associativity clarifies when continuation-passing style and defunctionalization can help and when they cannot, and may prompt other applications of these techniques.


page 1

page 2

page 3

page 4


Virtualizing Intermittent Computing

Intermittent computing requires custom programming models to ensure the ...

Memoisation: Purely, Left-recursively, and with (Continuation Passing) Style

Memoisation, or tabling, is a well-known technique that yields large imp...

Learning to Compose and Reason with Language Tree Structures for Visual Grounding

Grounding natural language in images, such as localizing "the black dog ...

Automating the Functional Correspondence between Higher-Order Evaluators and Abstract Machines

The functional correspondence is a manual derivation technique transform...

A Dictionary-Passing Translation of Featherweight Go

The Go programming language is an increasingly popular language but some...

Complete Call-by-Value Calculi of Control Operators, I

We give new call-by-value calculi of control operators that are complete...

An Algebraic Programming Style for Numerical Software and its Optimization

The abstract mathematical theory of partial differential equations (PDEs...