Compiling with Continuations, Continued, Andrew Kennedy. ICFP 2007.

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

## Recent comments

25 min 23 sec ago

3 hours 57 min ago

11 hours 22 min ago

13 hours 2 min ago

13 hours 28 min ago

13 hours 48 min ago

14 hours 28 min ago

14 hours 41 min ago

14 hours 59 min ago

16 hours 10 min ago