Compiling with continuations, continued
A Kennedy - Proceedings of the 12th ACM SIGPLAN international …, 2007 - dl.acm.org
Proceedings of the 12th ACM SIGPLAN international conference on Functional …, 2007•dl.acm.org
We present a series of CPS-based intermediate languages suitable for functional language
compilation, arguing that they have practical benefits over direct-style languages based on A-
normal form (ANF) or monads. Inlining of functions demonstrates the benefits most clearly: in
ANF-based languages, inlining involves a re-normalization step that rearranges let
expressions and possibly introduces a new'join point'function, and in monadic languages,
commuting conversions must be applied; in contrast, inlining in our CPS language is a …
compilation, arguing that they have practical benefits over direct-style languages based on A-
normal form (ANF) or monads. Inlining of functions demonstrates the benefits most clearly: in
ANF-based languages, inlining involves a re-normalization step that rearranges let
expressions and possibly introduces a new'join point'function, and in monadic languages,
commuting conversions must be applied; in contrast, inlining in our CPS language is a …
We present a series of CPS-based intermediate languages suitable for functional language compilation, arguing that they have practical benefits over direct-style languages based on A-normal form (ANF) or monads. Inlining of functions demonstrates the benefits most clearly: in ANF-based languages, inlining involves a re-normalization step that rearranges let expressions and possibly introduces a new 'join point' function, and in monadic languages, commuting conversions must be applied; in contrast, inlining in our CPS language is a simple substitution of variables for variables.
We present a contification transformation implemented by simple rewrites on the intermediate language. Exceptions are modelled using so-called 'double-barrelled' CPS. Subtyping on exception constructors then gives a very straightforward effect analysis for exceptions. We also show how a graph-based representation of CPS terms can be implemented extremely efficiently, with linear-time term simplification.
ACM Digital Library