Title
Shifting the stage: Staging with delimited control
Abstract
It is often hard to write programs that are efficient yet reusable. For example, an efficient implementation of Gaussian elimination should be specialized to the structure and known static properties of the input matrix. The most profitable optimizations, such as choosing the best pivoting or memoization, cannot be expected of even an advanced compiler because they are specific to the domain, but expressing these optimizations directly makes for ungainly source code. Instead, a promising and popular way to reconcile efficiency with reusability is for a domain expert to write code generators. Two pillars of this approach are types and effects. Typed multilevel languages such as MetaOCaml ensure safety and early error reporting: a well-typed code generator neither goes wrong nor generates code that goes wrong. Side effects such as state and control ease correctness and expressivity: An effectful generator can resemble the textbook presentation of an algorithm, as is familiar to domain experts, yet insert let for memoization and if for bounds checking, as is necessary for efficiency. Together, types and effects enable structuring code generators as compositions of modules with well-defined interfaces, and hence scaling to large programs. However, blindly adding effects renders multilevel types unsound. We introduce the first multilevel calculus with control effects and a sound type system. We give small-step operational semantics as well as a one-pass continuation-passing-style translation. For soundness, our calculus restricts the code generator's effects to the scope of generated binders. Even with this restriction, we can finally write efficient code generators for dynamic programming and numerical methods in direct style, like in algorithm textbooks, rather than in continuation-passing or monadic style.
Year
DOI
Venue
2011
10.1017/S0956796811000256
Partial Evaluation and Semantic-Based Program Manipulation
Keywords
Field
DocType
multilevel calculus,efficient code generator,delimited control,effectful generator,efficient implementation,code generator,well-typed code generator,ungainly source code,domain expert,effects renders multilevel type,typed multilevel language,continuation passing style,continuations,source code,operational semantics,profitability,numerical method,side effect,code generation,gaussian elimination,type system
Dynamic programming,Operational semantics,Programming language,Source code,Computer science,Correctness,Code generation,Theoretical computer science,Compiler,Soundness,Memoization
Journal
Volume
Issue
ISSN
21
6
0956-7968
Citations 
PageRank 
References 
23
1.07
47
Authors
3
Name
Order
Citations
PageRank
Yukiyoshi Kameyama117117.29
Oleg Kiselyov266045.44
Chung-chieh Shan348533.27