Cutting Out Continuations

Graham Hutton and Patrick Bahr

A List of Successes That Can Change the World: Essays Dedicated to Philip Wadler on the Occasion of His 60th Birthday

Abstract

In the field of program transformation, one often transforms
programs into continuation-passing style to make their flow of
control explicit, and then immediately removes the resulting
continuations using defunctionalisation to make the programs
first-order. In this article, we show how these two transformations
can be fused together into a single transformation step that
cuts out the need to first introduce and then eliminate continuations.
Our approach is calculational, uses standard equational
reasoning techniques, and is widely applicable.