Skip to main content
Log in

A self-applicable partial evaluator and its use in incremental compilation

  • Published:
New Generation Computing Aims and scope Submit manuscript

Abstract

This paper presents an experimental implementation of a self-applicable partial evaluator in Prolog used for compiler generation and compiler generator generation. The partial evaluator is an extension of a simple meta interpreter for Prolog programs, and its self-application is straightforward because of its simplicity. A method of incremental compilation is also described as a promising application of the partial evaluator for knowledge-based systems.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Similar content being viewed by others

References

  1. Futamura, Y., “Partial Evaluation of Computation Process—An Approach to a Compiler-Compiler”,Systems, Computers, Controls, Vol. 2, No. 5, pp. 45–50, 1971.

    Google Scholar 

  2. Ershov, A. P., “On the Essence of Compilation”, inFormal Description of Programming Concepts (E. J. Neuhold), North-Holland, pp. 391–420, 1978.

  3. Takeuchi, A. and Furukawa, K., “Partial Evaluation of Prolog Programs and Its Application to Meta Programming”, inInformation Processing 86 (H.-J. Kugler, ed.), Dublin, Ireland, North-Holland, pp. 415–420, 1986.

  4. Beckman, L., Haraldsson, A., Oskarsson, Ö. and Sandewall, E., “A Partial Evaluator, and Its Use as a Programming Tool”,Artificial Intelligence, Vol. 7, No. 4, pp. 319–357, 1976.

    Article  MATH  Google Scholar 

  5. Haraldsson, A., “A Program Manipulation System Based on Partial Evaluation”,Linköping Studies in Science and Technology Dissertations 14, Linköping University, Sweden, 1977.

    Google Scholar 

  6. Jones, N. D., Sestoft, P. and Søndergaard, H., “An Experiment in Partial Evaluation: The Generation of a Compiler Generator”, inRewriting Techniques and Applications (J.-P. Jouannaud, ed.),Lecture Notes in Computer Science, 202, Springer-Verlag, pp. 124–140, 1985.

  7. Sterling, L. and Beer, R. D., “Incremental Flavor-Mixing of Meta-Interpreters for Expert System Construction”,Proc. 3rd Symposium on Logic Programming, Salt Lake City, Utah, pp. 20–27, 1986.

  8. Gallagher, J., “Transforming Logic Programs by Specialising Interpreters”,ECAI-86 7th European Conference on Artificial Intelligence, Brighton Centre, United Kingdom, pp. 109–122, 1986.

  9. Coscia, P., Franceschi, P., Levi, G. and Torre, L., “Object Level Reflection of Inference Rules by Partial Evaluation”, inWorkshop on Meta-Level Architectures and Reflection (P. Maes and D. Nardi, eds.), Sardinia, Italy, North-Holland, 1986.

  10. Komorowski, H. J., “Partial Evaluation as a Means for Inferencing Data Structures in an Applicative Language: A Theory and Implementation in the Case of Prolog”,Ninth ACM Symposium on Principles of Programming Languages, Albuquerque, New Mexico, pp. 255–267, 1982.

  11. Kursawe, K., “How to Invent a Prolog Machine, inThird International Conference on Logic Programming, London (E. Shapiro, ed.), United Kingdom,Lecture Notes in Computer Science, 225, Springer-Verlag, pp. 134–148, 1986.

  12. Pereira, L. M., Pereira, F. C. N. and Warren, D. H. D., “User’s Guide to DECsystem 10 PROLOG”,Occasional Paper, 15, Dept. of Artificial Intelligence, Edinburgh, 1979.

    Google Scholar 

  13. Kahn, K. M., “A Partial Evaluator of Lisp Programs Written in Prolog”, inFirst International Logic Programming Conference (M. Van Caneghem, ed.), Marseille, France, pp. 19–25, 1982.

  14. Tamaki, H. and Sato, T., “Unfold/Fold Transformation of Logic Programs”,Proc. of The Second International Logic Programming Conference, Uppsala, pp. 127–138, 1984.

  15. Fujita, H., “On Automating Partial Evaluation of Prolog Programs”,ICOT Technical Memorandum, TM-250, Tokyo, 1987. [in Japanese]

  16. Venken, R., “A Prolog Meta-interpreter for Partial Evaluation and Its Application to Source to Source Transformation and Query-Opimization”, inECAI-84, Advances in Artificial Intelligence (T. O’Shea, ed.), Pisa, Italy, North-Holland, pp. 91–100, 1984.

  17. Vasey, P., “Qualified Answers and Their Application to Transformation”, inThird International Conf. on Logic Programming, London (E. Shapiro, ed.), United Kingdom,Lecture Notes in Computer Science, 225, Springer-Verlag, pp. 425–432, 1986.

  18. Shapiro, E., “Logic Programs with Uncertainties: A Tool for Implementing Rule-based Systems”,Proc. IJCAI-83, pp. 529–532, 1983.

  19. Naish, L., “Negation and Control in Prolog”,Lecture Notes in Computer Science, 238, Springer-Verlag, 1985.

  20. Fujita, H., “An Algorithm for Partial Evaluation with Constraints”,ICOT Technical Memorandum, TM-367, Tokyo, 1987.

  21. Furukawa, K. and Okumura, A., “Unfolding Rules for GHC Programs”,ICOT Technical Report, TR-277, Tokyo, 1987.

Download references

Author information

Authors and Affiliations

Authors

About this article

Cite this article

Fujita, H., Furukawa, K. A self-applicable partial evaluator and its use in incremental compilation. New Gener Comput 6, 91–118 (1988). https://doi.org/10.1007/BF03037133

Download citation

  • Received:

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF03037133

Keywords

Navigation