An Introduction to Online and Offline Partial Evaluation using a Simple Flowchart Language

These notes present basic principles of partial evaluation using the simple imperative language FCL (a language of flowcharts introduced by Jones and Gomard). Topics include online partial evaluators, offline partial evaluators, and binding-time analysis. The goal of the lectures is to give a rigorous presentation of the semantics of partial evaluation systems, while also providing details of actual implementations. Each partial evaluation system is specified by an operational semantics, and each is implemented in Scheme and Java. Exercises include proving various properties about the systems using the operational semantics, and modifying and extending the implementations.

[1]  John Hatclii Foundations for Partial Evaluation of Functional Languages with Computational Eeects 1 Partial Evaluation of Programs with Computational Eeects , .

[2]  Glynn Winskel,et al.  The formal semantics of programming languages - an introduction , 1993, Foundation of computing series.

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

[4]  Andrei P. Ershov,et al.  On the Partial Computation Principle , 1977, Inf. Process. Lett..

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

[6]  Peter Thiemann,et al.  Type specialisation for imperative languages , 1997, ICFP '97.

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

[8]  Uwe Meyer,et al.  Techniques for partial evaluation of imperative languages , 1991, PEPM '91.

[9]  Robert Glück,et al.  Fortran program specialization , 1995, SIGP.

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

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

[12]  Erik Ruf,et al.  On the specialization of online program specializers , 1992, Journal of Functional Programming.

[13]  Jesper Jørgensen,et al.  Compiler Generation by Partial Evaluation , 1992 .

[14]  P. H. Lindsay Human Information Processing , 1977 .

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

[16]  Jacques Noyé,et al.  A Uniform Approach for Compile-Time and Run-Time Specialization , 1996, Dagstuhl Seminar on Partial Evaluation.

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

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

[19]  Neil D. Jones,et al.  Compiler generation by partial evaluation , 1989 .

[20]  Flemming Nielson,et al.  Two-level functional languages , 1992, Cambridge tracts in theoretical computer science.

[21]  Neil D. Jones,et al.  The Essence of Program Transformation by Partial Evaluation and Driving , 1999, Logic, Language and Computation.

[22]  Robert Glück,et al.  A positive supercompiler , 1996, Journal of Functional Programming.

[23]  Robert Glück,et al.  1998 symposium on partial evaluation , 1998, CSUR.

[24]  Peter Thiemann,et al.  Sound Specialization in the Presence of Computational Effects , 1997, TACS.

[25]  Robert Glück,et al.  Occam's Razor in Metacompuation: the Notion of a Perfect Process Tree , 1993, WSA.

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

[27]  Olivier Danvy,et al.  A computational formalization for partial evaluation , 1996, Mathematical Structures in Computer Science.