Higher-Order and Symbolic Computation

, Volume 11, Issue 4, pp 363–397 | Cite as

Definitional Interpreters for Higher-Order Programming Languages

  • John C. Reynolds
Article

Abstract

Higher-order programming languages (i.e., languages in which procedures or labels can occur as values) are usually defined by interpreters that are themselves written in a programming language based on the lambda calculus (i.e., an applicative language such as pure LISP). Examples include McCarthy's definition of LISP, Landin's SECD machine, the Vienna definition of PL/I, Reynolds' definitions of GEDANKEN, and recent unpublished work by L. Morris and C. Wadsworth. Such definitions can be classified according to whether the interpreter contains higher-order functions, and whether the order of application (i.e., call by value versus call by name) in the defined language depends upon the order of application in the defining language. As an example, we consider the definition of a simple applicative programming language by means of an interpreter written in a similar language. Definitions in each of the above classifications are derived from one another by informal but constructive methods. The treatment of imperative features such as jumps and assignment is also discussed.

programming language language definition interpreter lambda calculus applicative language higher-order function closure order of application continuation LISP GEDANKEN PAL SECD machine J-operator reference 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    McCarthy, John. Recursive functions of symbolic expressions and their computation by machine, part I. Communications of the ACM, 3(4):184–195, April 1960.Google Scholar
  2. 2.
    Landin, Peter J. The next 700 programming languages. Communications of the ACM, 9(3):157–166, March 1966.Google Scholar
  3. 3.
    Evans, Jr., Arthur. PAL - A language designed for teaching programming linguistics. In Proceedings of 23rd National ACM Conference, pages 395–403. Brandin/Systems Press, Princeton, New Jersey, 1968.Google Scholar
  4. 4.
    Reynolds, John C. GEDANKEN - A simple typeless language based on the principle of completeness and the reference concept. Communications of the ACM, 13(5):308–319, May 1970.Google Scholar
  5. 5.
    Church, Alonzo. The Calculi of Lambda-Conversion, volume 6 of Annals of Mathematics Studies. Princeton University Press, Princeton, New Jersey, 1941.Google Scholar
  6. 6.
    Curry, Haskell Brookes and Feys, Robert. Combinatory Logic, Volume 1. Studies in Logic and the Foundations of Mathematics. North-Holland, Amsterdam, 1958. Second printing 1968.Google Scholar
  7. 7.
    Landin, Peter J. A λ-calculus approach. In Leslie Fox, editor, Advances in Programming and Non-Numerical Computation: Proceedings of A Summer School, pages 97–141. Oxford University Computing Laboratory and Delegacy for Extra-Mural Studies, Pergamon Press, Oxford, England, 1966.Google Scholar
  8. 8.
    Floyd, Robert W. Assigning meanings to programs. In J. T. Schwartz, editor, Mathematical Aspects of Computer Science, volume 19 of Proceedings of Symposia in Applied Mathematics, pages 19–32, New York City, April 5-7, 1966. American Mathematical Society, Providence, Rhode Island, 1967.Google Scholar
  9. 9.
    Manna, Zohar. The correctness of programs. Journal of Computer and System Sciences, 3(2):119–127, May 1969.Google Scholar
  10. 10.
    Hoare, C. A. R. An axiomatic basis for computer programming. Communications of the ACM, 12(10):576–580 and 583, October 1969. Reprinted in [11].Google Scholar
  11. 11.
    Gries, David, editor. Programming Methodology. Springer-Verlag, New York, 1978.Google Scholar
  12. 12.
    Scott, Dana S. Outline of a mathematical theory of computation. Technical Monograph PRG-2, Programming Research Group, Oxford University Computing Laboratory, Oxford, England, November 1970. A preliminary version appeared in Proceedings of the Fourth Annual Princeton Conference on Information Sciences and Systems (1970), 169-176.Google Scholar
  13. 13.
    Scott, Dana S. Lattice theory, data types and semantics. In Randell Rustin, editor, Formal Semantics of Programming Languages: Courant Computer Science Symposium 2, pages 65–106, New York University, New York, September 14-16, 1970. Prentice-Hall, Englewood Cliffs, New Jersey, 1972.Google Scholar
  14. 14.
    Scott, Dana S. Models for various type-free calculi. In Patrick Suppes, Leon Henkin, Athanase Joja, and Gr. C. Moisil, editors, Logic, Methodology and Philosophy of Science IV: Proceedings of the Fourth International Congress, volume 74 of Studies in Logic and the Foundations of Mathematics, pages 157–187, Bucharest, Romania, August 29-September 4, 1971. North-Holland, Amsterdam, 1973.Google Scholar
  15. 15.
    Scott, Dana S. Continuous lattices. In F. William Lawvere, editor, Toposes, Algebraic Geometry and Logic, volume 274 of Lecture Notes in Mathematics, Dalhousie University, Halifax, Nova Scotia, January 16-19, 1971. Springer-Verlag, Berlin, 1972.Google Scholar
  16. 16.
    Milner, Robin. Implementation and applications of Scott's logic for computable functions. In Proceedings of an ACM Conference on Proving Assertions about Programs, pages 1–6, Las Cruces,New Mexico, January 6-7, 1972. ACM, New York. SIGPLAN Notices Volume 7, Number nu1 and SIGACT News, Number 14.Google Scholar
  17. 17.
    Burstall, Rodney M. Formal description of program structure and semantics in first order logic. In Bernard Meltzer and Donald Michie, editors, Machine Intelligence 5, pages 79–98. Edinburgh University Press, Edinburgh, Scotland, 1969.Google Scholar
  18. 18.
    Lucas, Peter, Lauer, Peter E., and Stigleitner, H. Method and notation for the formal definition of programming languages. Technical Report TR 25.087, IBM Laboratory Vienna, June 28, 1968. Revised July 1, 1970.Google Scholar
  19. 19.
    Reynolds, John C. GEDANKEN - a simple typeless language which permits functional data structures and coroutines. Report ANL-7621, Applied Mathematics Division, Argonne National Laboratory, Argonne, Illinois, September 1969.Google Scholar
  20. 20.
    Morris, F. Lockwood. The next 700 formal language descriptions. Lisp and Symbolic Computation, 6(3- 4):249–257, November 1993. Original manuscript dated November 1970.Google Scholar
  21. 21.
    de Bakker, Jaco W. Semantics of programming languages. In Julius T. Tou, editor, Advances in Information Systems Science, volume 2, chapter 3, pages 173–227. Plenum Press, New York, 1969.Google Scholar
  22. 22.
    Park, David M. R. Fixpoint induction and proofs of program properties. In Bernard Meltzer and Donald Michie, editors, Machine Intelligence 5, pages 59–78. Edinburgh University Press, Edinburgh, 1969.Google Scholar
  23. 23.
    Feldman, Jerome and Gries, David. Translator writing systems. Communications of the ACM, 11(2):77–113, February 1968.Google Scholar
  24. 24.
    McCarthy, John. Towards a mathematical science of computation. In Cicely M. Popplewell, editor, Information Processing 62: Proceedings of IFIP Congress 1962, pages 21–28, Munich, August 27-September 1, 1962. North-Holland, Amsterdam, 1963.Google Scholar
  25. 25.
    Wozencraft, John M. and Evans, Jr., Arthur. Notes on programming linguistics. Technical report, Department of Electrical Engineering, Massachusetts Institute of Technology, Cambridge, Massachusetts, February 1971.Google Scholar
  26. 26.
    van Wijngaarden, Adriaan. Recursive definition of syntax and semantics. In T. B. Steel, Jr., editor, Formal Language Description Languages for Computer Programming: Proceedings of the IFIP Working Conference on Formal Language Description Languages, pages 13–24, Baden bei Wien, Austria, September 15-18, 1964. North-Holland, Amsterdam, 1966.Google Scholar
  27. 27.
    Morris, Jr., James H. A bonus from van Wijngaarden's device. Communications of the ACM, 15(8):773, August 1972.Google Scholar
  28. 28.
    Fischer, Michael J. Lambda calculus schemata. In Proceedings of an ACM Conference on Proving Assertions about Programs, pages 104–109, Las Cruces, New Mexico, January 6-7, 1972. ACM, New York.Google Scholar
  29. 29.
    Landin, Peter J. A correspondence between ALGOL 60 and Church's lambda-notation. Communications of the ACM, 8(2-3):89–101, 158-165, February-March 1965.Google Scholar
  30. 30.
    Barron, D.W., Buxton, John N., Hartley, D.F., Nixon, E., and Strachey, Christopher. The main features of CPL. The Computer Journal, 6:134–143, July 1963.Google Scholar
  31. 31.
    van Wijngaarden, Adriaan, Mailloux, B.J., Peck, J.E.L., and Koster, C.H.A. Report on the algorithmic language ALGOL 68. Numerische Mathematik, 14(2):79–218, 1969.Google Scholar
  32. 32.
    Cheatham, Jr., T.E., Fischer, Alice, and Jorrand, P. On the basis for ELF - an extensible language facility. In 1968 Fall Joint Computer Conference, volume 33, Part Two of AFIPS Conference Proceedings, pages 937–948, San Francisco, December 9-11, 1968. Thompson Book Company, Washington, D.C.Google Scholar

Copyright information

© Kluwer Academic Publishers 1998

Authors and Affiliations

  • John C. Reynolds
    • 1
  1. 1.Systems and Information ScienceSyracuse UniversityUSA

Personalised recommendations