Definitional Interpreters for Higher-Order Programming Languages

  • Authors:
  • John C. Reynolds

  • Affiliations:
  • Systems and Information Science, Syracuse University

  • Venue:
  • Higher-Order and Symbolic Computation
  • Year:
  • 1998

Quantified Score

Hi-index 0.00

Visualization

Abstract

Higher-order programming languages (i.e., languages inwhich procedures or labels can occur as values) are usually definedby interpreters that are themselves written in a programming languagebased on the lambda calculus (i.e., an applicative language such aspure LISP). Examples include McCarthy‘s definition of LISP, Landin‘sSECD machine, the Vienna definition of PL/I, Reynolds‘ definitions ofGEDANKEN, and recent unpublished work by L. Morris and C. Wadsworth.Such definitions can be classified according to whether theinterpreter contains higher-order functions, and whether the order ofapplication (i.e., call by value versus call by name) in the definedlanguage depends upon the order of application in the defininglanguage. As an example, we consider the definition of a simpleapplicative programming language by means of an interpreter writtenin a similar language. Definitions in each of the aboveclassifications are derived from one another by informal butconstructive methods. The treatment of imperative features such asjumps and assignment is also discussed.