Proceedings of the 12th ACM SIGPLAN International Conference on Functional Programming 2007
DOI: 10.1145/1291151.1291179
|View full text |Cite
|
Sign up to set email alerts
|

Compiling with continuations, continued

Abstract: 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 o… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
50
0

Year Published

2009
2009
2023
2023

Publication Types

Select...
6
2
1

Relationship

0
9

Authors

Journals

citations
Cited by 63 publications
(50 citation statements)
references
References 32 publications
0
50
0
Order By: Relevance
“…The intermediate form, originally expressed in the source functional language, was designed to allow code optimization. More specialized intermediate languages, such as the A-normal forms, [9], first-order intermediate languages, [10], and CPS languages, [17], were introduced to reduce the size of the intermediate representation of the code, and perform better optimizations. Our intermediate language is designed to be close to the target of our compilation, which is scripting languages such as JavaScript and Python.…”
Section: Comparisons With Other Workmentioning
confidence: 99%
“…The intermediate form, originally expressed in the source functional language, was designed to allow code optimization. More specialized intermediate languages, such as the A-normal forms, [9], first-order intermediate languages, [10], and CPS languages, [17], were introduced to reduce the size of the intermediate representation of the code, and perform better optimizations. Our intermediate language is designed to be close to the target of our compilation, which is scripting languages such as JavaScript and Python.…”
Section: Comparisons With Other Workmentioning
confidence: 99%
“…When this function gets called the first time, it starts out by decrypting the encrypted instructions (offsets 5-11), thus replacing the encrypted code in memory. Subsequently (offsets [12][13][14], it replaces its first instruction by a direct jump in order to skip over the decryption loop in future executions. The remaining code (offsets [15][16][17][18][19][20][21][22][23], which is also the target of that jump, simply performs the callback function call and then returns 1.…”
Section: Flexibilitymentioning
confidence: 99%
“…I is an untyped, or rather, dynamically typed CPS-variant of S, inspired by Kennedy's intermediate language [12]. Parts of it are shown in Figure 5.…”
Section: Intermediate Language Imentioning
confidence: 99%
“…This uses the standard de Bruijn machinery to perform the substitution [Pierce 2002]. More efficient imperative algorithms exist [Appel and Jim 1997, Benton et al 2004, Kennedy 2007. The key point is that these algorithms are intensional.…”
Section: Intensional Analysismentioning
confidence: 99%