This is a minimal supercompiler (sc-mini
).
The goal is to stress the main features of supercompilation for a working functional programmer.
Its design is an attempt to illustrate the following formula:
Supercompiler = Driving
+ Positive information propagation
+ Folding
+ Simplification
+ Generalization
However, it turns out to be not so easy task. So here we illustrate this formula step-by-step:
- Prototype = Driving + Generalization + Folding
- Deforester = Prototype + Simplification of graph of configurations
- Supercompiler = Deforester + Positive Information Propagation
In order to catch the idea of this supercompiler, just look into the following modules into the following order:
- Prototype
- Deforester
- Supercompiler
There is a tutorial (64 pages) explaining in detail every aspect of sc-mini
.
Ilya Klyuchnikov and Dimitur Krustev. Supercompilation: Ideas and Methods (+appendix). The Monad Reader 23 (2014)