Retrospective: The Essence of Compiling with Continuations

(link)

From 20 years of the ACM SIGPLAN Conference on Programming Language Design and Implementation: 1979 - 1999. A Selection.

A one page retrospective of this highly important paper. Useful as a guide to the literature and related research.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

The original paper is one of

The original paper is one of the papers highlighted in the LtU papers page, by the way.

Another retrospective seems to disagree

Olin Shivers in Higher-order
control-flow
analysis in retrospect:
Lessons learned, lessons abandoned
:

In 2002, then, CPS would appear to be a lesson abandoned. I
would argue that the use of CPS remains a boon to program analysis.
Not only does CPS provide a uniform representation of control
structure, it also packages up evaluation context into a familiar
form: lambda. A functional-program analysis system already has
powerful machinery for reasoning about lambdas; the CPS transform
allows this machinery to be employed to reason about context,
as well. Without CPS, separate contextual analyses and transforms
must be also implemented—redundantly, in my view.
In the fourteen years that have passed since the publication of
“Control-flow analysis in Scheme,” I have seen many developments
of
k-CFA variants done in a direct-style setting. They are all, to
my eye, needlessly complicated by the profusion of control points
and control mechanisms made necessary by direct style—harder to
develop, harder to understand.

CPS, ANF, SSA

There was some discussion of CPS vs. A-normal form and the imperative-oriented alternative, Static Single Assignment, in the recent comp.lang.scheme thread Comparison of CPS, ANF, and SSA.

Functional compiler writers seem to mostly like ANF, but that doesn't necessarily negate Olin's perspective, since he seems focused on CFA and perhaps other program analyses which (I'll conjecture) may not be the only factor which matters to a compiler writer.