A taxonomy of program transformers
See the course slides Taxonomy of Program Transformation given and a follow-up paper Program Transformation Mechanics. A Classification of Mechanisms for Program Transformation with a Survey of Existing Transformation Systems by Eelco Visser.From A Roadmap to Metacomputation by Supercompilation:
| transformer | information propagation | evaluation strategy | control restruct. | KMP test | elim struct. | |
|---|---|---|---|---|---|---|
| variant | genetic | |||||
| Partial Evaluation (PE) | constant | in-out | poly | mono | - | - | 
| Deforestation | constant | out-in | poly | poly | - | + | 
| Partial deduction | unification | unspecified | poly | mono | + | - | 
| Positive SCP | unification | out-in | poly | poly | + | + | 
| Perfect SCP | constraint | out-in | poly | poly | + | + | 
| GPC | constraint | out-in | poly | poly | + | + | 
- information propagation
    
- constant propagation:
 - the outcome of tests are ignored;
 - unification-based propagation:
 - substitutions into the transformed terms are used to represent the outcome of tests;
 - constraint-based propagation:
 - the transformer explicitly maintains sets of constraints recording previous tests (restrictions). Depending on the programming language other abstract properties may be propagated;
 
 - evaluation strategy
    
- inside-out (or call-by-value or applicative order);
 - outside-in (or call-by-name or normal-order);
 
 - control restructuring
    
- monovariant:
 - any program point in the subject program gives rise to zero or one program point in the residual program;
 - polyvariant:
 - any program point in the subject program can give rise to one or more program points in the residual program;
 - monogenetic:
 - any program point in the residual program is produced from a single program point of the subject program;
 - polygenetic:
 - any program point in the residual program may be produced from one or more program points of the subject program;
 
 - KMP test
    
- - : doesn't pass the test;
 - + : pass the test;
 
 - eliminate date structures
    
- - : doesn't eliminate;
 - + : eliminate;
 
 
This page is linked from: Program Transformation