Shifting the stage: Staging with delimited control

Yukiyoshi Kameyama, Oleg Kiselyov, Chung Chieh Shan

Research output: Chapter in Book/Report/Conference proceedingConference contribution

34 Citations (Scopus)

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: a well-typed code generator neither goes wrong nor generates code that goes wrong. Side effects such as state and control ease correctness: 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. However, adding effects blindly renders multilevel types unsound. We introduce the first two-level calculus with control effects and a sound type system. We give small-step operational semantics as well as a continuation-passing style (CPS) 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 CPS or monadic style.

Original languageEnglish
Title of host publicationProceedings of the 2009 ACM SIGPLAN Symposium on Partial Evaluation and Program Manipulation, PEPM'09
Pages111-120
Number of pages10
DOIs
Publication statusPublished - 2009
Externally publishedYes
Event2009 ACM SIGPLAN Symposium on Partial Evaluation and Program Manipulation, PEPM'09 - Savannah, GA, United States
Duration: 2009 Jan 192009 Jan 20

Publication series

NameProceedings of the 2009 ACM SIGPLAN Symposium on Partial Evaluation and Program Manipulation, PEPM'09

Other

Other2009 ACM SIGPLAN Symposium on Partial Evaluation and Program Manipulation, PEPM'09
Country/TerritoryUnited States
CitySavannah, GA
Period09/1/1909/1/20

Keywords

  • Code generation
  • Continuations
  • Delimited control
  • Design
  • Languages
  • Multilevel languages
  • Mutable state
  • Side effects
  • Staged programming

ASJC Scopus subject areas

  • Computer Science Applications
  • Software

Fingerprint

Dive into the research topics of 'Shifting the stage: Staging with delimited control'. Together they form a unique fingerprint.

Cite this