Bootstrapping higher-order program transformers from interpreters
Michael Sperber, Robert Glück, Peter J. Thiemann · 1996
Partial evaluation can automatically generate program transformers from interpreters. In the context of functional languages, we investigate the design space of higher-order interpreters to achieve certain transformation effects. Our work is based on the interpretive approach and exploits the language preservation property of offline partial evaluators. We have generated higher-order online partial evaluators, optimizing closure converters, and converters to first-order tail form. The latter can serve as the middle end of a compiler. The generated transformers are strictly more powerful than the partial evaluators used for their generation. 1 Introduction Specialization of a self-applicable partial evaluator with respect to an interpreter produces a compiler. This paper investigates the generation of optimizing program transformers from interpreters. We study different types of interpreters for a strict, higher-order functional language, and show how to use different partial evaluat...