A self-applicable partial evaluator for the lambda calculus
- 1 April 1992
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 14 (2) , 147-172
- https://doi.org/10.1145/128861.128864
Abstract
We describe theoretical and a few practical aspects of an implemented self-applicable partial evaluator for the untyped lambda calculus with constants, conditionals, and a fixed point operator. The purpose of this paper is first to announce the existence of (and to describe) a partial evaluator that is both higher-order and self-applicable; second to describe a surprisingly simple solution to the central problem of binding time analysis, and third to prove that the partial evaluator yields correct answers. While λ-mix (the name of our system) seems to have been the first higher-order self-applicable partial evaluator to run on a computer, it was developed mainly for research purposes. Two recently developed systems are much more powerful for practical use, but also much more complex: Similix[3,5] and Schism[7]. Our partial evaluator is surprisingly simple, completely automatic, and has been implemented in a side effect-free subset of Scheme. It has been used to compile, generate compilers and generate a compiler generator.Keywords
This publication has 13 references indexed in Scilit:
- A partial evaluator for the untyped lambda-calculusJournal of Functional Programming, 1991
- Automatic autoprojection of higher order recursive equationsPublished by Springer Nature ,1990
- Mix: A self-applicable partial evaluator for experiments in compiler generationHigher-Order and Symbolic Computation, 1989
- Partial evaluation of pattern matching in stringsInformation Processing Letters, 1989
- A self-applicable partial evaluator for term rewriting systemsPublished by Springer Nature ,1989
- Mixed computation of Prolog programsNew Generation Computing, 1988
- Detecting global variables in denotational specificationsACM Transactions on Programming Languages and Systems, 1985
- Compiler prototyping using formal semanticsACM SIGPLAN Notices, 1984
- A partial evaluator, and its use as a programming toolArtificial Intelligence, 1977
- Incremental ComputationPublished by Elsevier ,1967