Extended abstract of MIX: A self-applicable partial evaluator for experiments in compiler generation

  • Neil D. Jones
  • Peter Sestoft
  • Harald Søndergaard
Part V Implementation Issues
Part of the Lecture Notes in Computer Science book series (LNCS, volume 298)


We have discussed partial evaluation of programs in statically scoped Lisp-like languages and described a self-applicable partial evaluator, mix, that has been successfully applied to generate compilers for toy languages, and even to generate a compiler generator. We assessed mix and gave tables of running times and space usage to illustrate its behavior.

As a basis for this, we introduced a formal framework for partial evaluation, compiling, and compiler generation which enabled the presentation of mix's applications. We also described and discussed the language Mixwell that was designed as the subject language for mix.


Residual Program Partial Evaluation Source Program Symbolic Evaluation Subject Program 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. Beckman, L. et al., A partial evaluator, and its use as a programming tool, Artificial Intelligence 7, 4 (1976) 319–357CrossRefGoogle Scholar
  2. Bulyonkov, M. A., Polyvariant mixed computation for analyzer programs, Acta Informatica 21 (1984) 473–484CrossRefMathSciNetGoogle Scholar
  3. Cousot, P. and R. Cousot, Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints, Proc. Fourth ACM POPL Symp., Los Angeles, California 1977, 238–252Google Scholar
  4. Dybkjær, H., Parsers and partial evaluation: An experiment. DIKU student report No. 85-7-15, University of Copenhagen, Denmark, 1985Google Scholar
  5. Emanuelson, P. and A. Haraldsson, On compiling embedded languages in Lisp, Proc. 1980 Lisp Conf., Stanford, California (1980) 208–215Google Scholar
  6. Ershov, A. P., On the essence of compilation, Formal Description of Programming Concepts (ed. E. J. Neuhold), North-Holland 1978, 391–418Google Scholar
  7. Ershov, A. P., Mixed computation: Potential applications and problems for study, Theoretical Computer Science 18 (1982) 41–67CrossRefGoogle Scholar
  8. Futamura, Y., Partial evaluation of computation process — an approach to a compiler-compiler, Systems, Computers, Controls 2, 5 (1971) 45–50Google Scholar
  9. Ganzinger, H. and N. D. Jones (eds.), Programs as Data Objects, Lecture Notes in Computer Science 217, Springer-Verlag 1986Google Scholar
  10. Haraldsson, A., A partial evaluator, and its use for compiling iterative statements in Lisp, Proc. Fifth ACM POPL Symp., Tucson, Arizona 1978, 195–202Google Scholar
  11. Jones, N. D., P. Sestoft, and H. Søndergaard, An experiment in partial evaluation: The generation of a compiler generator, Rewriting Techniques and Applications (ed. J.-P. Jouannaud), Lecture Notes in Computer Science 202, Springer-Verlag 1985, 124–140Google Scholar
  12. Kahn, K. M., A partial evaluator of Lisp programs written in Prolog, Proc. First Int. Logic Programming Conf. (ed. M. Van Caneghem), Marseille, France 1982, 19–25Google Scholar
  13. Kahn, K. M. and M. Carlsson, The compilation of Prolog programs without the use of a Prolog compiler, Proc. Int. Conf. Fifth Generation Computer Systems, Tokyo, Japan 1984, 348–355Google Scholar
  14. Kleene, S. C., Introduction to Metamathematics, Van Nostrand 1952Google Scholar
  15. Komorowski, H. J., A Specification of an Abstract Prolog Machine and Its Application to Partial Evaluation, Linköping Studies in Science and Technology Dissertations 69, University of Linköping, Sweden 1981Google Scholar
  16. Kugler, H.-J. (ed.), Information Processing 86, Proc. IFIP 86 Conf., North-Holland 1986Google Scholar
  17. Lombardi, L. A., Incremental computation, Advances in Computers 8 (ed. F. L. Alt and M. Rubinoff), Academic Press 1967, 247–333Google Scholar
  18. Mogensen, T. Æ, The Application of Partial Evaluation to Ray-Tracing, Master's thesis, University of Copenhagen, Denmark, 1986Google Scholar
  19. Mosses, P. D., SIS — Semantics Implementation System, Reference Manual and User Guide, DAIMI Report MD-30, University of Aarhus, Denmark 1979Google Scholar
  20. Paulson, L., A semantics-directed compiler generator, Proc. Ninth ACM POPL Symp., Albuquerque, New Mexico 1982, 224–233Google Scholar
  21. Rees, J. and W. Clinger (eds.), Revised3 report on the algorithmic language Scheme, SIGPLAN Notices 21, 12 (1986) 37–79Google Scholar
  22. Rogers, H., Theory of Recursive Functions and Effective Computability, McGraw-Hill 1967Google Scholar
  23. Safra, S. and E. Shapiro, Meta interpreters for real, in [Kugler 1986], 271–278Google Scholar
  24. Sestoft, P., The structure of a self-applicable partial evaluator, in [Ganzinger and Jones 1986], 236–256Google Scholar
  25. Takeuchi, A. and K. Furukawa, Partial evaluation of Prolog programs and its application to meta programming, in [Kugler 1986], 415–420Google Scholar
  26. TsNIPIASS, Bazisnyi Refal i yego Realizatsiya na Vychislitelnykh Mashinakh, TsNIPIASS, Gosstroi SSSR, Moscow 1977Google Scholar
  27. Turchin, V. F., A supercompiler system based on the language Refal, SIGPLAN Notices 14, 2 (1979) 46–54Google Scholar
  28. Turchin, V. F., R. M. Nirenberg, and D. V. Turchin, Experiments with a supercompiler, Proc. 1982 ACM Symp. Lisp and Functional Programming, Pittsburgh, Pennsylvania 1982, 47–55Google Scholar
  29. Venken, R., A Prolog meta-interpreter for partial evaluation and its application to source to source transformation and query-optimisation, Proc. ECAI-84, Pisa, Italy (ed. T. O'Shea), North-Holland 1984, 91–100Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1988

Authors and Affiliations

  • Neil D. Jones
    • 1
  • Peter Sestoft
    • 1
  • Harald Søndergaard
    • 1
  1. 1.DIKU, University of CopenhagenCopenhagen ØDenmark

Personalised recommendations