Cutting out continuations

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 tr...

Full description

Bibliographic Details
Main Authors: Hutton, Graham, Bahr, Patrick
Format: Conference or Workshop Item
Published: 2016
Online Access:https://eprints.nottingham.ac.uk/32703/
Description
Summary: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.