Advertisement

Higher-Order and Symbolic Computation

, Volume 11, Issue 4, pp 355–361 | Cite as

Definitional Interpreters Revisited

  • John C. Reynolds
Article

Abstract

To introduce the republication of “Definitional Interpreters for Higher-Order Programming Languages”, the author recounts the circumstances of its creation, clarifies several obscurities, corrects a few mistakes, and briefly summarizes some more recent developments.

operational semantics denotational semantics interpreter lambda calculus applicative language functional language metacircularity higher-order function defunctionalization closure call by value call by name continuation continuation-passing-style transformation LISP ISWIM PAL Scheme SECD machine J-operator escape assignment 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Reynolds, John C. Theories of Programming Languages. Cambridge University Press, Cambridge, England, 1998.Google Scholar
  2. 2.
    Reynolds, John C. Definitional interpreters for higher-order programming languages. In Proceedings of the ACM Annual Conference, volume 2, pages 717–740, Boston, Massachusetts, August 1972. ACM, New York. Reprinted as [3].Google Scholar
  3. 3.
    Reynolds, John C. Definitional interpreters for higher-order programming languages. Higher-Order and Symbolic Computation, 11(4):363–397, 1998.Google Scholar
  4. 4.
    Evans, Jr., Arthur. The lambda calculus and its relation to programming languages. In Proceedings of the ACM Annual Conference, volume 2, pages 714–716, Boston, Massachusetts, August, 1972. ACM, New York.Google Scholar
  5. 5.
    Morris, Jr., James H. Private communication. September, 1972.Google Scholar
  6. 6.
    Reynolds, John C. On the relation between direct and continuation semantics. In Jacques Loeckx, editor, Automata, Languages and Programming: 2nd Colloquium, volume 14 of Lecture Notes in Computer Science, pages 141–156, Saarbrücken, Germany, July 29-August 2, 1974. Springer-Verlag, Berlin.Google Scholar
  7. 7.
    Wadsworth, Christopher P. Private communication. August 30, 1972.Google Scholar
  8. 8.
    Wadsworth, Christopher P. Semantics and Pragmatics of the Lambda-Calculus. Ph. D. dissertation, Programming Research Group, Oxford University, Oxford, England, September 1971.Google Scholar
  9. 9.
    Landin, Peter J. A generalization of jumps and labels. Higher-Order and Symbolic Computation, 11(2):125–143, 1998. Originally a report for UNIVAC Systems Programming Research, dated August 29, 1965.Google Scholar
  10. 10.
    Thielecke, Hayo An introduction to Landin's “A generalization of jumps and labels”. Higher-Order and Symbolic Computation, 11(2):117–124, 1998.Google Scholar
  11. 11.
    Felleisen, Matthias Reflections on Landin's J-operator: A partly historical note. Computer Languages, 12(3/4):197–207, 1987.Google Scholar
  12. 12.
    Lucas, Peter and Walk, K. On the formal description of PL/I. Annual Review in Automatic Programming, 6(3):105–182, 1969.Google Scholar
  13. 13.
    Strachey, Christopher and Wadsworth, Christopher P. Continuations, a mathematical semantics for handling full jumps. Technical Monograph PRG-11, Programming Research Group, Oxford University Computing Laboratory, Oxford, England, January 1974.Google Scholar
  14. 14.
    Fischer, Michael J. Lambda-calculus schemata. Lisp and Symbolic Computation, 6(3-4):259–287, November 1993.Google Scholar
  15. 15.
    Reynolds, John C. The discoveries of continuations. Lisp and Symbolic Computation, 6(3-4):233–247, November 1993.Google Scholar
  16. 16.
    McCarthy, John, Brayton, R., Edwards, Daniel J., Fox, P., Hodes, L., Luckham, David C., Maling, K., Park, David M.R. and Russell. S. LISP I programmer's manual. Technical report, Computation Center and Research Laboratory of Electronics, Massachusetts Institute of Technology, Cambridge, Massachusetts, March 1, 1960.Google Scholar
  17. 17.
    McCarthy, John, Abrahams, Paul W., Edwards, Daniel J., Hart, Timothy P. and Levin, Michael I. LISP 1.5 Programmer's Manual. MIT Press, Cambridge, Massachusetts, 1962.Google Scholar
  18. 18.
    Landin, Peter J. The mechanical evaluation of expressions. The Computer Journal, 6(4):308–320, January 1964.Google Scholar
  19. 19.
    Steele Jr., Guy Lewis. RABBIT: A compiler for SCHEME (a study in compiler optimization). Report AI-TR- 474, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, Cambridge, Massachusetts, May 1978.Google Scholar
  20. 20.
    Sussman, Gerald Jay and Steele Jr., Guy Lewis SCHEME: An interpreter for extended lambda calculus. AI Memo 349, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, Cambridge, Massachusetts, December 1975. Reprinted as [21].Google Scholar
  21. 21.
    Sussman, Gerald Jay and Steele Jr., Guy Lewis SCHEME: An interpreter for extended lambda calculus. Higher-Order and Symbolic Computation, 11(4):405–439, 1998.Google Scholar
  22. 22.
    Minamide, Yasuhiko, Morrisett, Greg and Harper, Robert. Typed closure conversion. In Conference Record of POPL '96: The 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 271–283, St. Petersburg Beach, Florida, January 21-24, 1996. ACM Press, New York.Google Scholar
  23. 23.
    Shivers, Olin. Control-Flow Analysis of Higher-Order Languages or Taming Lambda. Ph. D. dissertation, School of Computer Science, Carnegie Mellon University, Pittsburgh, Pennsylvania, May 1991. Report CMU-CS-91-145.Google Scholar
  24. 24.
    Plotkin, Gordon D. Call-by-name, call-by-value and the λ-calculus. Theoretical Computer Science, 1(2):125–159, December 1975.Google Scholar
  25. 25.
    Sabry, Amr and Felleisen, Matthias. Reasoning about programs in continuation-passing style. Lisp and Symbolic Computation, 6(3-4):289–360, November 1993.Google Scholar
  26. 26.
    Meyer, Albert R. and Wand, Mitchell. Continuation semantics in typed lambda-calculi (summary). In Rohit Parikh, editor, Logic of Programs, volume 193 of Lecture Notes in Computer Science, pages 219–224, Brooklyn, New York, June 17-19, 1985. Springer-Verlag, Berlin.Google Scholar
  27. 27.
    Harper, RobertW., Duba, Bruce F. and MacQueen, David B. Typing first-class continuations in ML. Journal of Functional Programming, 3(4):465–484, October 1993.Google Scholar
  28. 28.
    Hatcliff, John and Danvy, Olivier. A generic account of continuation-passing styles. In Conference Record of POPL '94: 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 458–471, Portland, Oregon, January 17-21, 1994. ACM Press, New York.Google Scholar
  29. 29.
    Harper, Robert W. and Lillibridge, Mark. Polymorphic type assignment and CPS conversion. Lisp and Symbolic Computation, 6(3-4):361–379, November 1993.Google Scholar
  30. 30.
    Appel, Andrew W. Compiling with Continuations. Cambridge University Press, Cambridge, England, 1992.Google Scholar
  31. 31.
    Clinger, William, Friedman, Daniel P. and Wand, Mitchell. A scheme for a higher-level semantic algebra. In Maurice Nivat and John C. Reynolds, editors, Algebraic Methods in Semantics, pages 237–250. Cambridge University Press, Cambridge, England, 1985.Google Scholar
  32. 32.
    Kelsey, Richard, Clinger, William and Rees, Jonathan (editors). Revised5 report on the algorithmic language Scheme. Higher-Order and Symbolic Computation, 11(3):7–105, 1998.Google Scholar
  33. 33.
    Appel, Andrew W. and MacQueen, David B. Standard ML of New Jersey. In Jan Maluszyński and Martin Wirsing, editors, Programming Language Implementation and Logic Programming: 3rd International Symposium, PLILP'91, volume 528 of Lecture Notes in Computer Science, pages 1–13, Passau, Germany, August 26-28, 1991. Springer-Verlag, Berlin.Google Scholar
  34. 34.
    Griffin, Timothy G. A formulae-as-types notion of control. In Conference Record of the Seventeenth Annual ACM Symposium on Principles of Programming Languages, pages 47–58, San Francisco, January 17-19, 1990. ACM Press, New York.Google Scholar
  35. 35.
    Murthy, Chetan. Extracting Constructive Content from Classical Proofs. Ph. D. dissertation, Department of Computer Science, Cornell University, Ithaca, New York, August 1990. Technical Report 90-1151.Google Scholar
  36. 36.
    Moggi, Eugenio. Notions of computation and monads. Information and Computation, 93(1):55–92, July 1991.Google Scholar
  37. 37.
    Filinski, Andrzej. Controlling Effects. Ph. D. dissertation, School of Computer Science, Carnegie Mellon University, Pittsburgh, Pennsylvania, May 1996. Report CMU-CS-96-119.Google Scholar

Copyright information

© Kluwer Academic Publishers 1998

Authors and Affiliations

  • John C. Reynolds
    • 1
  1. 1.School of Computer ScienceCarnegie Mellon UniversityUSA

Personalised recommendations