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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
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.
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.
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.
Charles Consel and Siau Cheng Khoo. Parameterized partial evaluation. ACM Transactions on Programming Languages and Systems, 15(3):463–493, 1993.
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.
Olivier Danvy, Robert Glück, and Peter Thiemann, editors. 1998 Symposium on Partial Evaluation, 1998.
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.
Andrei P. Ershov. On the partial computation principle. Information Processing Letters, 6(2):41–67, 1977.
Andrei P. Ershov. Mixed computation: Potential applications and problems for study. Theoretical Computer Science, 18:41–67, 1982.
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.
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.
John Hatcliff. Foundations of partial evaluation of functional programs with computational effects. ACM Computing Surveys, 1998. (in press).
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.
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.
Neil D. Jones, Carsten K. Gomard, and Peter Sestoft. Partial Evaluation and Automatic Program Generation. Prentice-Hall International, 1993.
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.
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.
Paul Kleinrubatscher, Albert Kriegshaber, Robert Zöchling, and Robert Glück. Fortran program specialization. SIGPLAN Notices, 30(4):61–70, 1995.
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).
M. Marquard and B. Steensgaard. Partial evaluation of an object-oriented imperative language. Master’s thesis, University of Copenhagen, Copenhagen, Denmark, 1992.
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.
Flemming Nielson and Hanne Riis Nielson. Two-Level Functional Languages, volume 34 of Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, 1992.
Erik Ruf. Topics in online partial evaluation. PhD thesis, Stanford, Palo Alto, California, February 1993.
Erik Ruf and Daniel Weise. On the specialization of online program specializers. Journal of Functional Programming, 3, 1993.
Morten Heine Sørensen, Robert Glück, and Neil Jones. A positive supercompiler. Journal of Functional Programming, 6(6):811–838, 1996.
Peter Thiemann. A generic framework for partial evaluation of programs with computational effects. In Proceedings of the Seventh European Symposium on Programming, 1998.
Valentin F. Turchin. The concept of a supercompiler. ACM Transactions on Programming Languages and Systems, 8(3):292–325, 1986.
Glynn Winskel. The Formal Semantics of Programming Languages: An Introduction. MIT Press, 1993.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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