Definitional Interpreters for HigherOrder Programming Languages
 John C. Reynolds
 … show all 1 hide
Rent the article at a discount
Rent now* Final gross prices may vary according to local VAT.
Get AccessAbstract
Higherorder 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 higherorder 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.
 McCarthy, John. Recursive functions of symbolic expressions and their computation by machine, part I. Communications of the ACM, 3(4):184–195, April 1960.
 Landin, Peter J. The next 700 programming languages. Communications of the ACM, 9(3):157–166, March 1966.
 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.
 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.
 Church, Alonzo. The Calculi of LambdaConversion, volume 6 of Annals of Mathematics Studies. Princeton University Press, Princeton, New Jersey, 1941.
 Curry, Haskell Brookes and Feys, Robert. Combinatory Logic, Volume 1. Studies in Logic and the Foundations of Mathematics. NorthHolland, Amsterdam, 1958. Second printing 1968.
 Landin, Peter J. A λcalculus approach. In Leslie Fox, editor, Advances in Programming and NonNumerical Computation: Proceedings of A Summer School, pages 97–141. Oxford University Computing Laboratory and Delegacy for ExtraMural Studies, Pergamon Press, Oxford, England, 1966.
 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 57, 1966. American Mathematical Society, Providence, Rhode Island, 1967.
 Manna, Zohar. The correctness of programs. Journal of Computer and System Sciences, 3(2):119–127, May 1969.
 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].
 Gries, David, editor. Programming Methodology. SpringerVerlag, New York, 1978.
 Scott, Dana S. Outline of a mathematical theory of computation. Technical Monograph PRG2, 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), 169176.
 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 1416, 1970. PrenticeHall, Englewood Cliffs, New Jersey, 1972.
 Scott, Dana S. Models for various typefree 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 29September 4, 1971. NorthHolland, Amsterdam, 1973.
 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 1619, 1971. SpringerVerlag, Berlin, 1972.
 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 67, 1972. ACM, New York. SIGPLAN Notices Volume 7, Number nu1 and SIGACT News, Number 14.
 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.
 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.
 Reynolds, John C. GEDANKEN  a simple typeless language which permits functional data structures and coroutines. Report ANL7621, Applied Mathematics Division, Argonne National Laboratory, Argonne, Illinois, September 1969.
 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.
 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.
 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.
 Feldman, Jerome and Gries, David. Translator writing systems. Communications of the ACM, 11(2):77–113, February 1968.
 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 27September 1, 1962. NorthHolland, Amsterdam, 1963.
 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.
 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 1518, 1964. NorthHolland, Amsterdam, 1966.
 Morris, Jr., James H. A bonus from van Wijngaarden's device. Communications of the ACM, 15(8):773, August 1972.
 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 67, 1972. ACM, New York.
 Landin, Peter J. A correspondence between ALGOL 60 and Church's lambdanotation. Communications of the ACM, 8(23):89–101, 158165, FebruaryMarch 1965.
 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.
 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.
 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 911, 1968. Thompson Book Company, Washington, D.C.
 Title
 Definitional Interpreters for HigherOrder Programming Languages
 Journal

HigherOrder and Symbolic Computation
Volume 11, Issue 4 , pp 363397
 Cover Date
 19981201
 DOI
 10.1023/A:1010027404223
 Print ISSN
 13883690
 Online ISSN
 15730557
 Publisher
 Kluwer Academic Publishers
 Additional Links
 Topics
 Keywords

 programming language
 language definition
 interpreter
 lambda calculus
 applicative language
 higherorder function
 closure
 order of application
 continuation
 LISP
 GEDANKEN
 PAL
 SECD machine
 Joperator
 reference
 Industry Sectors
 Authors

 John C. Reynolds ^{(1)}
 Author Affiliations

 1. Systems and Information Science, Syracuse University, USA