by Olivier Danvy, Kristoffer Hgsbro Rose
http://www.ens-lyon.fr/~krisrose/ftp/PAPERS/danvy+rose-rta98.ps.gz
Add To MetaCart
Abstract:
We demonstrate the usefulness of higher-order rewriting techniques for specializing programs, i.e., for partial evaluation. More precisely, we demonstrate how casting program specializers as combinatory reduction systems (CRSs) makes it possible to formalize the corresponding program transformations as meta-reductions, i.e., reductions in the internal "substitution calculus. " For partial-evaluation problems, this means that instead of having to prove on a case-by-case basis that one's "two-level functions " operate properly, one can concisely formalize them as a combinatory reduction system and obtain as a corollary that static reduction does not go wrong and yields a well-formed residual program. We have found that the CRS substitution calculus provides an adequate expressive power to formalize partial evaluation: it provides sufficient termination strength while avoiding the need for additional restrictions such as types that would complicate the description unnecessarily (for our purpose). In addition, partial evaluation provides a number of examples of higher-order rewriting where being higher order is a central (rather than an occasional or merely exotic) property. We illustrate this by demonstrating how standard but non-trivial partial-evaluation examples are handled with higher-order rewriting. 1
Citations
|
894
|
The Lambda Calculus: its Syntax and Semantics
– Barendregt
- 1984
|
|
579
|
Term rewriting systems
– Klop
- 1992
|
|
552
|
Partial evaluation and automatic program generation
– Jones, Gomard, et al.
- 1993
|
|
496
|
An Introduction to Metamathematics
– Kleene
- 1950
|
|
251
|
Call-by-name, call-by-value and the *-calculus
– Plotkin
- 1975
|
|
242
|
Tutorial notes on partial evaluation
– Consel, Danvy
- 1993
|
|
231
|
Combinatory reduction systems
– Klop
- 1980
|
|
150
|
Reasoning about programs in continuation-passing style
– Sabry, Felleisen
- 1992
|
|
128
|
Essentials of Programming Languages
– Friedman, Wand, et al.
- 2001
|
|
106
|
An experiment in partial evaluation: the generation of a compiler generator
– Jones, Sestoft, et al.
- 1989
|
|
102
|
Danvy and Andrzej Filinski. Representing control, a study of the CPS transformation
– Olivier
- 1992
|
|
43
|
Orthogonal higher-order rewrite systems are confluent
– Nipkow
- 1993
|
|
33
|
A Self-Applicable Partial Evaluator for Term Rewriting Systems
– Bondorf
- 1989
|
|
30
|
Oostrom V., van Raamsdonk F. Combinatory reduction systems: introduction and survey
– Klop, Oostrom
- 1993
|
|
25
|
The occurrence of continuation parameters in CPS terms
– Danvy, Pfenning
- 1995
|
|
25
|
Operational Reduction Models for Functional Programming Languages
– Rose
- 1996
|
|
23
|
Correctness of binding-time analysis
– Palsberg
- 1993
|
|
14
|
Optimization of equational programs using partial evaluation
– Sherman, Strandh, et al.
|
|
13
|
combinators: A new implementation method for applicative languages
– Super
- 1982
|
|
12
|
Oostrom and Femke van Raamsdonk. Weak orthogonality implies confluence: the higher-order case
– van
- 1994
|
|
11
|
Oostrom and Femke van Raamsdonk. Comparing combinatory reduction systems and higher-order rewrite systems
– van
- 1993
|
|
8
|
Higher-order rewriting and partial evaluation
– Danvy, Rose
- 1998
|
|
8
|
Program abstraction and instantiation
– Dershowitz
- 1985
|
|
8
|
Compiling with reflections
– Sabry, Wadler
- 1996
|