This paper gives a gentle introduction to Turchin's supercompilation and its applications in metacomputation with an emphasis on recent developments. First, a complete supercompiler, including positive driving and generalization, is defined for a functional language and illustrated with examples. Then a taxonomy of related transformers is given and compared to the supercompiler. Finally, we put supercompilation into the larger perspective of metacomputation and consider three metacomputation tasks: specialization, composition, and inversion.
|
1122
|
Introduction to Functional Programming
– Bird, Wadler
- 1988
|
|
683
|
Rewrite Systems
– Dershowitz, Jouannaud
- 1990
|
|
545
|
Partial Evaluation and Automatic Program Generation
– Jones, Gomard, et al.
- 1993
|
|
506
|
Introduction to Metamathematics
– KLEENE
- 1952
|
|
503
|
A transformation system for developing recursive programs
– Burstall, Darlington
- 1977
|
|
341
|
Deforestation: transforming programs to eliminate trees
– Wadler
- 1990
|
|
227
|
Tutorial notes on partial evaluation
– Consel, Danvy
- 1993
|
|
213
|
Partial Evaluation in Logic Programming
– Lloyd, Shepherdson
- 1991
|
|
131
|
Partial evaluation of computing process – an approach to a compilercompiler
– Futamura
- 1971
|
|
130
|
A system for specialising logic programs
– Gallagher
- 1991
|
|
130
|
The concept of a supercompiler
– Turchin
- 1986
|
|
108
|
MIX: A self-applicable partial evaluator for experiments in compiler generation
– Jones, Sestoft, et al.
- 1989
|
|
107
|
An experiment in partial evaluation: The generation of a compiler generator
– Jones, Sestoft, et al.
- 1985
|
|
70
|
Partial Evaluation of Functional Logic Programs
– Alpuente, Falaschi, et al.
- 1996
|
|
62
|
For a better support of static data flow
– Consel, Danvy
- 1991
|
|
59
|
Occam’s razor in metacomputation: the notion of a perfect process tree
– Glück, Klimov
|
|
55
|
Ensuring global termination of partial deduction while allowing exible polyvariance
– Martens, Gallagher
- 1995
|
|
51
|
E cient multi-level generating extensions for program specialization
– Gluck, rgensen
- 1991
|
|
45
|
Global control for partial deduction through characteristic atoms and global trees
– Leuschel, Martens
- 1996
|
|
44
|
Partial deduction and driving are equivalent
– Glück, Sørensen
- 1994
|
|
43
|
Parameterized partial evaluation
– CONSEL, KHOO
- 1993
|
|
41
|
An introduction to partial deduction
– Komorowski
- 1992
|
|
40
|
Loop checking in partial deduction
– Bol
- 1993
|
|
40
|
Polyvariant mixed computation for analyzer programs
– Bulyonkov
- 1984
|
|
30
|
Controlling conjunctive partial deduction of de nite logic programs
– Gluck, rgensen, et al.
- 1996
|
|
27
|
A partial evaluator and its use as a programming tool
– Beckman, Haraldson, et al.
- 1976
|
|
27
|
The essence of program transformation by partial evaluation and driving
– Jones
- 1994
|
|
25
|
Generating transformers for deforestation and supercompilation
– Glück, Jørgensen
- 1994
|
|
25
|
A conceptual embedding of folding into partial deduction: Towards a maximal integration
– Leuschel, Schreye, et al.
- 1996
|
|
24
|
Arity raiser and its use in program specialization
– Romanenko
- 1990
|
|
24
|
An algorithm of generalization in positive supercompilation
– Srensen, Gluck
- 1995
|
|
24
|
A Positive Supercompiler
– Srensen, Gluck, et al.
- 1996
|
|
23
|
Proving the Correctness of Recursion-Based Automatic Program Transformations
– Sands
- 1995
|
|
22
|
On the Essence of Compilation
– Ershov
- 1978
|
|
22
|
When will deforestation stop
– Ferguson, Wadler
- 1988
|
|
22
|
Program transformation with metasystem transitions
– Turchin
- 1993
|
|
21
|
Implementation of multiple specialization in logic programs
– Puebla, Hermenegildo
- 1995
|
|
21
|
Total Correctness by Local Improvement in Program Transformation
– Sands
- 1995
|
|
19
|
Partial Evaluation of Pattern Matching in Constraint Logic Programming Languages
– Smith
- 1991
|
|
18
|
On the generation of specializers
– Gluck
- 1994
|
|
18
|
A compiler generator produced by a self-applicable specializer can have a surprisingly natural and understandable structure
– Romanenko
- 1988
|
|
16
|
Towards multiple self-application
– Gluck
- 1991
|
|
16
|
On the synthesis of function inverses
– Harrison, Khoshnevisan
- 1992
|
|
16
|
Unfolding -- definition -- folding, in this order, for avoiding unnecessary variables in logic programs
– Proietti, Pettorossi
- 1995
|
|
15
|
Partial Computation of Programs
– Futamura
- 1982
|
|
15
|
LISP as the Language for an Incremental Computer
– Lombardi, Raphael
- 1967
|
|
14
|
Experiments with a supercompiler
– Turchin, Nirenberg, et al.
- 1982
|
|
12
|
On the partial computation principle
– Ershov
- 1977
|
|
12
|
A Self-Applicable Supercompiler
– Nemytykh, Pinchuk, et al.
|
|
12
|
Inversion and metacomputation
– Romanenko
- 1991
|