LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
The essence of compiling with continuations
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Continuation-based partial evaluation
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Online partial evaluation for shift and reset
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Final shift for call/cc:: direct implementation of shift and reset
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Revised Report on the Algorithmic Language Scheme
Higher-Order and Symbolic Computation
Efficient Type Inference for Higher-Order Binding-Time Analysis
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
A first-order one-pass CPS transformation
Theoretical Computer Science
Combinators for program generation
Journal of Functional Programming
A new one-pass transformation into monadic normal form
CC'03 Proceedings of the 12th international conference on Compiler construction
Axioms for control operators in the CPS hierarchy
Higher-Order and Symbolic Computation
Context-based proofs of termination for typed delimited-control operators
PPDP '09 Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programming
Hi-index | 0.00 |
This paper presents an offline partial evaluator for the λ-calculus with the delimited continuation constructs shift and reset. Based on Danvy and Filinski's type system for shift and reset, we first present a type system that specifies well-annotated terms. We then show a specializer that receives an annotated term and produces the output in continuation-passing style (CPS). The correctness of our partial evaluator is established using the technique of logical relations. Thanks to the explicit reference to the type of continuations, we can establish the correctness using the standard proof technique of structural induction, despite the fact that the specializer itself is written in CPS. The paper also shows an efficient constraint-based binding-time analysis as well as how to extend the present work to richer language constructs, such as recursion and conditionals.