ContinuationPassing, ClosurePassing Style
Andrew W. Appel*
Revised September 1988
We implemented a continuationpassing style (CPS) code generator for ML. Our CPS language is
represented as an ML datatype in which all functions are named and most kinds of illformed expres
sions are impossible. We separate the code generation into phases that rewrite this representation
into eversimpler forms. Closures are represented explicitly as records, so that closure strategies can
be communicated from one phase to another. No stack is used. Our benchmark data shows that the
new method is an improvement over our previous, abstractmachine based code generator.
To appear in POPL '89.
* Supported in part by NSF Grant DCR8603543 and by a Digital Equipment Corp. Faculty Incentive Grant.
+ AT&T Bell Laboratories, Murray Hill, NJ. Current address: Laboratory for Computer Science, MIT, Cambridge, Mass.