On one-pass CPS transformations

  • Authors:
  • Olivier Danvy;Kevin Millikin;Lasse R. Nielsen

  • Affiliations:
  • BRICS, Department of Computer Science, University of Aarhus, IT-parken, Aabogade 34, DK-8200 Aarhus N, Denmark email: danvy@brics.dk, kmillikin@brics.dk, lrn@brics.dk;BRICS, Department of Computer Science, University of Aarhus, IT-parken, Aabogade 34, DK-8200 Aarhus N, Denmark email: danvy@brics.dk, kmillikin@brics.dk, lrn@brics.dk;BRICS, Department of Computer Science, University of Aarhus, IT-parken, Aabogade 34, DK-8200 Aarhus N, Denmark email: danvy@brics.dk, kmillikin@brics.dk, lrn@brics.dk

  • Venue:
  • Journal of Functional Programming
  • Year:
  • 2007

Quantified Score

Hi-index 0.01

Visualization

Abstract

We bridge two distinct approaches to one-pass CPS transformations, i.e, CPS transformations that reduce administrative redexes at transformation time instead of in a post-processing phase. One approach is compositional and higher-order, and is independently due to Appel, Danvy and Filinski, and Wand, building on Plotkin's seminal work. The other is non-compositional and based on a reduction semantics for the lambda-calculus, and is due to Sabry and Felleisen. To relate the two approaches, we use three tools: Reynolds's defunctionalization and its left inverse, refunctionalization; a special case of fold–unfold fusion due to Ohori and Sasano, fixed-point promotion; and an implementation technique for reduction semantics due to Danvy and Nielsen, refocusing. This work is directly applicable to transforming programs into monadic normal form.