Definitional Interpreters for Higher-Order Programming Languages
- 289 Downloads
- 48 Citations
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.
Preview
Unable to display preview. Download preview PDF.
References
- 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.Landin, Peter J. The next 700 programming languages. Communications of the ACM, 9(3):157–166, March 1966.Google Scholar
- 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.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.Church, Alonzo. The Calculi of Lambda-Conversion, volume 6 of Annals of Mathematics Studies. Princeton University Press, Princeton, New Jersey, 1941.Google Scholar
- 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.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.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.Manna, Zohar. The correctness of programs. Journal of Computer and System Sciences, 3(2):119–127, May 1969.Google Scholar
- 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.Gries, David, editor. Programming Methodology. Springer-Verlag, New York, 1978.Google Scholar
- 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.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.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.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.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.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.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.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.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.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.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.Feldman, Jerome and Gries, David. Translator writing systems. Communications of the ACM, 11(2):77–113, February 1968.Google Scholar
- 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.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.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.Morris, Jr., James H. A bonus from van Wijngaarden's device. Communications of the ACM, 15(8):773, August 1972.Google Scholar
- 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.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.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.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.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