Opportunities for Online Partial Evaluation

Partial evaluators can be separated into two classes: offline specializers, which make all of their reduce/residualize decisions before specialization, and online specializers, which make such decisions during specialization. The choice of which method to use is driven by a tradeoff between the efficiency of the specializer and the quality of the residual programs that it produces. Existing research describes some of the inefficiencies of online specializers, and how these are avoided using offline methods, but fails to address the price paid in specialization quality. This paper motivates research in online specialization by describing two fundamental limitations of the offline approach, and explains why the online approach does not encounter the same difficulties.

[1]  Kenneth M. Kahn,et al.  A Partial Evaluator of Lisp Programs Written in Prolog , 1982, ICLP.

[2]  Robert Glück Towards Multiple Self-Application , 1991, PEPM.

[3]  Andrew A. Berlin,et al.  Compiling scientific code using partial evaluation , 1990, Computer.

[4]  Olivier Danvy,et al.  Partial Evaluation of Pattern Matching in Strings , 1989, Inf. Process. Lett..

[5]  Charles Consel,et al.  Binding time analysis for high order untyped functional languages , 1990, LISP and Functional Programming.

[6]  William D. Clinger,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[7]  Peter Sestoft,et al.  An experiment in partial evaluation: the generation of a compiler generator , 1985, SIGP.

[8]  Carsten Kehler Holst,et al.  Finiteness Analysis , 1991, Conference on Functional Programming Languages and Computer Architecture.

[9]  John Hughes,et al.  Towards Binding-Time Improvement for Free , 1990, Functional Programming.

[10]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[11]  Andrew Berlin A Compilation Strategy for Numerical Programs Based on Partial Evaluation , 1989 .

[12]  Anders Bondorf,et al.  Automatic Autoprojection of Higher Order Recursive Equations , 1990, Sci. Comput. Program..

[13]  Siau-Cheng Khoo,et al.  Compiling inheritance using partial evaluation , 1991 .

[14]  Anders Bondorf,et al.  Automatic Autoprojection of Recursive Equations with Global Variables and Abstract Data Types , 1991, Sci. Comput. Program..

[15]  Erik Ruf,et al.  Preserving Information during Online Partial Evaluation , 1992 .

[16]  Erik Ruf,et al.  Avoiding Redundant Specialization during Partial Evaluation , 1992 .

[17]  Anders Haraldsson A program manipulation system based on partial evaluation , 1977 .

[18]  R. Schooler,et al.  PARTIAL EVALUATION AS A MEANS OF LANGUAGE EXTENSIBILITY , 1984 .

[19]  Valentin F. Turchin,et al.  The concept of a supercompiler , 1986, TOPL.

[20]  Charles Consel,et al.  New Insights into Partial Evaluation: the SCHISM Experiment , 1988, ESOP.

[21]  Olivier Danvy,et al.  For a Better Support of Static Data Flow , 1991, FPCA.

[22]  Daniel W. Weise Graphs as an Intermediate Representation for Partial Evaluation , 1990 .

[23]  Olivier Danvy,et al.  From Interpreting to Compiling Binding Times , 1990, ESOP.

[24]  Erik Ruf,et al.  Improving the Accuracy of Higher-Order Specialization using Control Flow Analysis , 1992, PEPM.

[25]  Donald A. Smith,et al.  Partial Evaluation of a CLP Language , 1990, NACLP.

[26]  Siau-Cheng Khoo,et al.  Parameterized partial evaluation , 1991, PLDI '91.

[27]  Karel De Vlaminck,et al.  Program Bifurcation for a Polymorphic Typed Functional Language , 1991, PEPM.

[28]  Erik Ruf,et al.  Computing Types During Program Specialization , 1990 .

[29]  Andrew A. Berlin,et al.  Partial evaluation applied to numerical computation , 1990, LISP and Functional Programming.

[30]  Charles Consel Analyse de programmes, evaluation partielle et generation de compilateurs , 1989 .

[31]  Erik Ruf,et al.  Using Types to Avoid Redundant Specialization , 1991, PEPM.

[32]  Sergei A. Romanenko Arity Raiser and its Use in Program Specialization , 1990, ESOP.

[33]  Erik Ruf,et al.  Automatic Online Partial Evaluation , 1991, FPCA.