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

2 hours 36 min ago

2 hours 50 min ago

6 hours 46 min ago

11 hours 49 min ago

12 hours 16 sec ago

13 hours 35 min ago

14 hours 33 min ago

15 hours 17 min ago

15 hours 22 min ago

16 hours 10 min ago