An introduction to partial evaluation

Partial evaluation provides a unifying paradigm for a broad spectrum of work in program optimization compiling interpretation and the generation of automatic program generators [Bjørner et al. 1987; Ershov 1992; and Jones et al. 1993]. It is a program optimization technique, perhaps better called program specialization, closely related to but different from Jørring and Scherlis' staging transformations [1986]. It emphasizes, in comparison with Burstall and Darlington [1977] and Jørring and Scherlis [1986] and other program transformation work, full automation and the generation of program generators as well as transforming single programs. Much partial evaluation work to date has concerned automatic compiler generation from an interpretive definition of programming language, but it also has important applications to scientific computing, logic programming, metaprogramming, and expert systems; some pointers are given later.

[1]  Jesper Jørgensen,et al.  Generating a compiler for a lazy language by partial evaluation , 1992, POPL '92.

[2]  Anders Bondorf,et al.  A Self-Applicable Partial Evaluator for Term Rewriting Systems , 1989, TAPSOFT, Vol.2.

[3]  Dale Miller,et al.  From operational semantics to abstract machines , 1992, Mathematical Structures in Computer Science.

[4]  Peter Thiemann,et al.  Realistic compilation by partial evaluation , 1996, PLDI '96.

[5]  Peter Sestoft,et al.  Partial evaluation and automatic program generation , 1993, Prentice Hall international series in computer science.

[6]  Olivier Danvy,et al.  Tutorial notes on partial evaluation , 1993, POPL '93.

[7]  Erik Ruf Topics in online partial evaluation , 1993 .

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

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

[10]  Erik Sandewall,et al.  A Partial Evaluator, and its Use as a Programming Tool , 1976, Artif. Intell..

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

[12]  Charles Consel,et al.  A general approach for run-time specialization and its application to C , 1996, POPL '96.

[13]  Neil D. Jones,et al.  Compiler Generation by Partial Evaluation: A Case Study , 1991, Struct. Program..

[14]  John Launchbury,et al.  Projection factorisations in partial evaluation , 1991 .

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

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

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

[18]  Robert Glück,et al.  Towards Unifying Partial Evaluation, Deforestation, Supercompilation, and GPC , 1994, ESOP.

[19]  Semantics-Based Program Manipulation,et al.  Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, PEPM'93, Copenhagen, Denmark, June 14-16, 1993 , 1993, PEPM.

[20]  John W. Lloyd,et al.  Partial Evaluation in Logic Programming , 1991, J. Log. Program..

[21]  Frank G. Pagan Partial Computation and the Construction of Language Processors , 1990 .

[22]  David A. Schmidt,et al.  Compiler generation from denotational semantics , 1980, Semantics-Directed Compiler Generation.

[23]  John McCarthy,et al.  LISP 1.5 Programmer's Manual , 1962 .

[24]  Neil D. Jones,et al.  Mix ten years later , 1995, PEPM '95.

[25]  Charles Consel,et al.  A tour of Schism: a partial evaluation system for higher-order applicative languages , 1993, PEPM '93.

[26]  共立出版株式会社 コンピュータ・サイエンス : ACM computing surveys , 1978 .

[27]  Jesper Vasell A partial evaluator for data flow graphs , 1993, PEPM '93.

[28]  S. A. Romanenko,et al.  A compiler generator produced by a self-applicable specializer can have a surprisingly natural and u , 1988 .

[29]  William Pugh,et al.  Partial evaluation of high-level imperative programming languages with applications in hard real-time systems , 1992, POPL '92.

[30]  Dines Bjørner,et al.  Partial Evaluation and Mixed Computation , 1987 .

[31]  Dale Miller,et al.  From operational semantics to abstract machines: preliminary results , 1990, LISP and Functional Programming.

[32]  Olivier Danvy,et al.  Semantics-Directed Compilation of Nonlinear Patterns , 1991, Inf. Process. Lett..

[33]  Peter Holst Andersen Partial Evaluation Applied to Ray Tracing , 1996 .

[34]  Jan Komorowski,et al.  Partial evaluation as a means for inferencing data structures in an applicative language: a theory and implementation in the case of prolog , 1982, POPL '82.

[35]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[36]  Dines Bjørner,et al.  Partial Evaluation and Mixed Computation: Proceedings of the IFIP TC2 Workshop, Gammel Avernaes, Denmark, 18-24 Oct., 1987 , 1988 .

[37]  Robert Glück,et al.  Partial Evaluation of Numerical Programs in Fortran , 1994, PEPM.

[38]  Andrei P. Ershov,et al.  Mixed Computation: Potential Applications and Problems for Study , 1982, Theor. Comput. Sci..

[39]  Ehud Shapiro,et al.  Meta interpreters for real , 1988 .

[40]  Dan Sahlin,et al.  The Mixtus Approach to Automatic Partial Evaluation of Full Prolog , 1990, NACLP.

[41]  Neil D. Jones,et al.  A partial evaluator for the untyped lambda-calculus , 1991, Journal of Functional Programming.

[42]  Neil D. Jones,et al.  Mix: A self-applicable partial evaluator for experiments in compiler generation , 1989, LISP Symb. Comput..

[43]  Danny De Schreye,et al.  Towards creating specialised integrity checks through partial evaluation of meta-interpreters , 1995, PEPM '95.

[44]  Peter Thiemann,et al.  The essence of LR parsing , 1995, PEPM '95.

[45]  Ehud Shapiro,et al.  Algorithmic Program Debugging , 1983 .

[46]  William L. Scherlis,et al.  Compilers and staging transformations , 1986, POPL '86.

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

[48]  Calton Pu,et al.  Optimistic incremental specialization: streamlining a commercial operating system , 1995, SOSP.