Polyvariant Expansion and Compiler Generators

Polyvariant expansion is a program transformation which improves the results of offline partial evaluation. We show how to achieve it automatically for a higher-order functional language using the interpretive approach. We have designed and implemented an interpreter that statically propagates binding times. When specialized with respect to a source program, it performs polyvariant expansion. Generalizing the interpreter to an online specializer allows us to generate a binding-time-polyvariant compiler generator.

[1]  Carsten K. Gomard Partial type inference for untyped functional programs , 1990, LISP and Functional Programming.

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

[3]  Torben Æ. Mogensen Separating binding times in language specifications , 1989, Conference on Functional Programming Languages and Computer Architecture.

[4]  R. Kent Dybvig,et al.  The Scheme Programming Language , 1995 .

[5]  Marc Gengler,et al.  A Polyvariant Binding Time Analysis Handling Partially Known Values , 1992, WSA.

[6]  Mikhail A. Bulyonkov Extracting polyvariant binding time analysis from polyvariant specializer , 1993, PEPM '93.

[7]  Torben Æ. Mogensen Binding Time Analysis for Polymorphically Typed Higher Order Languages , 1989, TAPSOFT, Vol.2.

[8]  Fritz Henglein,et al.  Efficient Type Inference for Higher-Order Binding-Time Analysis , 1991, FPCA.

[9]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[10]  Patrick Cousot,et al.  Comparing the Galois Connection and Widening/Narrowing Approaches to Abstract Interpretation , 1992, PLILP.

[11]  Microcomputer Standards Subcommittee IEEE standard for the Scheme programming language , 1991 .

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

[13]  Patrick Cousot,et al.  Formal language, grammar and set-constraint-based program analysis by abstract interpretation , 1995, FPCA '95.

[14]  Charles Consel,et al.  Polyvariant binding-time analysis for applicative languages , 1993, PEPM '93.

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

[16]  Morten Heine Sørensen,et al.  Grammar-Based Data-Flow Analysis to Stop Deforestation , 1994, CAAP.

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

[18]  Robert Glück,et al.  On the generation of specializers , 1994, Journal of Functional Programming.

[19]  Bernhard Rytz,et al.  A Polyvariant Binding Time Analysis , 1992, PEPM.

[20]  Anders Bondorf,et al.  Efficient Analysis for Realistic Off-Line Partial Evaluation , 1993, J. Funct. Program..

[21]  Robert Glück,et al.  Bootstrapping higher-order program transformers from interpreters , 1996, SAC '96.

[22]  V. F. Turchin,et al.  A supercompiler system based on the language REFAL , 1979, SIGP.

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

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

[25]  Robert Glück,et al.  Generating optimizing specializers , 1994, Proceedings of 1994 IEEE International Conference on Computer Languages (ICCL'94).

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