Skip to main content

An Introduction to Online and Offline Partial Evaluation Using a Simple Flowchart Language

  • Conference paper
Partial Evaluation (DIKU 1998)

Part of the book series: Lecture Notes in Computer Science ((LNAI,volume 1706))

Included in the following conference series:

Abstract

These notes present basic principles of partial evaluation using the simple imperative language FCL (a language of flowcharts introduced by Jones and Gomard). Topics include online partial evaluators, offline partial evaluators, and binding-time analysis. The goal of the lectures is to give a rigorous presentation of the semantics of partial evaluation systems, while also providing details of actual implementations. Each partial evaluation system is specified by an operational semantics, and each is implemented in Scheme and Java. Exercises include proving various properties about the systems using the operational semantics, and modifying and extending the implementations.

Supported in part by NSF under grant CCR-9701418, and NASA under award NAG 21209.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Lars Ole Andersen. Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, Computer Science Department, University of Copenhagen, Copenhagen, Denmark, 1994. DIKU Report 94-19.

    Google Scholar 

  2. Anders Bondorf and Olivier Danvy. Automatic autoprojection of recursive equations with global variables and abstract data types. Science of Computer Programming, 16:151–195, 1991.

    Article  MATH  Google Scholar 

  3. Charles Consel, Luke Hornof, François Noël, Jacques Noyé, and Nicolae Volanschi. A uniform approach for compile-time and run-time specialization. In Proceedings of the 1996 International Seminar on Partial Evaluation, number 1110 in Lecture Notes in Computer Science, pages 54–72, Dagstuhl Castle, Germany, February 1996.

    Google Scholar 

  4. Charles Consel and Siau Cheng Khoo. Parameterized partial evaluation. ACM Transactions on Programming Languages and Systems, 15(3):463–493, 1993.

    Article  Google Scholar 

  5. Charles Consel and François Noël. A general approach for run-time specialization and its application to C. In Proceedings of the Twenty-third Annual ACM Symposium on Principles of Programming Languages, pages 145–156, St. Petersburg, FLA USA, January 1996. ACM Press.

    Google Scholar 

  6. Olivier Danvy, Robert Glück, and Peter Thiemann, editors. 1998 Symposium on Partial Evaluation, 1998.

    Google Scholar 

  7. Dirk Dussart, John Hughes, and Peter Thiemann. Type specialisation for imperative languages. In Proceedings of the 1997 ACM SIGPLAN International Conference on Functional Programming, pages 204–216, Amsterdam, The Netherlands, June 1997. ACM Press.

    Google Scholar 

  8. Andrei P. Ershov. On the partial computation principle. Information Processing Letters, 6(2):41–67, 1977.

    Article  MATH  Google Scholar 

  9. Andrei P. Ershov. Mixed computation: Potential applications and problems for study. Theoretical Computer Science, 18:41–67, 1982.

    Article  MathSciNet  MATH  Google Scholar 

  10. Robert Glück and Andrei Klimov. Occam’s razor in metacomputation: the notion of a perfect process tree. In Patrick Cousot, Moreno Falaschi, Gilberto Filè, and Antoine Rauzy, editors, Proceedings of the Third International Workshop on Static Analysis WSA’93, volume 724 of Lecture Notes in Computer Science, pages 112–123, Padova, Italy, September 1993.

    Google Scholar 

  11. Carsten K. Gomard and Neil D. Jones. Compiler generation by partial evaluation. In G. X. Ritter, editor, Information Processing’ 89. Proceedings of the IFIP 11th World Computer Congress, pages 1139–1144. IFIP, North-Holland, 1989.

    Google Scholar 

  12. John Hatcliff. Foundations of partial evaluation of functional programs with computational effects. ACM Computing Surveys, 1998. (in press).

    Google Scholar 

  13. John Hatcliff and Olivier Danvy. A computational formalization for partial evaluation. Mathematical Structures in Computer Science, 7:507–541, 1997. Special issue devoted to selected papers from the Workshop on Logic, Domains, and Programming Languages. Darmstadt, Germany. May, 1995.

    Article  MathSciNet  MATH  Google Scholar 

  14. Neil D. Jones. The essence of program transformation by partial evaluation and driving. In Masahiko Sato Neil D. Jones, Masami Hagiya, editor, Logic, Language and Computation, a Festschrift in honor of Satoru Takasu, pages 206–224. Springer-Verlag, April 1994.

    Google Scholar 

  15. Neil D. Jones, Carsten K. Gomard, and Peter Sestoft. Partial Evaluation and Automatic Program Generation. Prentice-Hall International, 1993.

    Google Scholar 

  16. Neil D. Jones, Peter Sestoft, and Harald Søndergaard. MIX: A self-applicable partial evaluator for experiments in compiler generation. LISP and Symbolic Computation, 2(1):9–50, 1989.

    Article  MATH  Google Scholar 

  17. Ulrik Jørring and William L. Scherlis. Compilers and staging transformations. In Mark Scott Johnson and Ravi Sethi, editors, Proceedings of the Thirteenth Annual ACM Symposium on Principles of Programming Languages, pages 86–96, St. Petersburg, Florida, January 1986.

    Google Scholar 

  18. Paul Kleinrubatscher, Albert Kriegshaber, Robert Zöchling, and Robert Glück. Fortran program specialization. SIGPLAN Notices, 30(4):61–70, 1995.

    Article  Google Scholar 

  19. Julia L. Lawall and Peter Thiemann. Sound specialization in the presence of computational effects. In Proceedings of Theoretical Aspects of Computer Software, Lecture Notes in Computer Science, September 1997. (to appear).

    Google Scholar 

  20. M. Marquard and B. Steensgaard. Partial evaluation of an object-oriented imperative language. Master’s thesis, University of Copenhagen, Copenhagen, Denmark, 1992.

    Google Scholar 

  21. U. Meyer. Techniques for partial evaluation of imperative languages. In Paul Hudak and Neil D. Jones, editors, Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, SIGPLAN Notices, Vol. 26, No 9, pages 94–105, New Haven, Connecticut, June 1991. ACM Press.

    Google Scholar 

  22. Flemming Nielson and Hanne Riis Nielson. Two-Level Functional Languages, volume 34 of Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, 1992.

    Google Scholar 

  23. Erik Ruf. Topics in online partial evaluation. PhD thesis, Stanford, Palo Alto, California, February 1993.

    Google Scholar 

  24. Erik Ruf and Daniel Weise. On the specialization of online program specializers. Journal of Functional Programming, 3, 1993.

    Google Scholar 

  25. Morten Heine Sørensen, Robert Glück, and Neil Jones. A positive supercompiler. Journal of Functional Programming, 6(6):811–838, 1996.

    Article  MATH  Google Scholar 

  26. Peter Thiemann. A generic framework for partial evaluation of programs with computational effects. In Proceedings of the Seventh European Symposium on Programming, 1998.

    Google Scholar 

  27. Valentin F. Turchin. The concept of a supercompiler. ACM Transactions on Programming Languages and Systems, 8(3):292–325, 1986.

    Article  MATH  Google Scholar 

  28. Glynn Winskel. The Formal Semantics of Programming Languages: An Introduction. MIT Press, 1993.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 1999 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Hatcliff, J. (1999). An Introduction to Online and Offline Partial Evaluation Using a Simple Flowchart Language. In: Hatcliff, J., Mogensen, T.Æ., Thiemann, P. (eds) Partial Evaluation. DIKU 1998. Lecture Notes in Computer Science, vol 1706. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-47018-2_2

Download citation

  • DOI: https://doi.org/10.1007/3-540-47018-2_2

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-66710-0

  • Online ISBN: 978-3-540-47018-2

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics