z-logo
open-access-imgOpen Access
Definitional interpreters for higher-order programming languages
Author(s) -
John Reynolds
Publication year - 1972
Publication title -
surface: the syracuse university research facility and collaborative environment (syracuse university)
Language(s) - English
Resource type - Conference proceedings
DOI - 10.1145/800194.805852
Subject(s) - interpreter , computer science , programming language , lisp , constructive , language primitive , fifth generation programming language , linguistics , programming paradigm , process (computing) , philosophy
Higher-order programming languages (i.e., languages in which procedures or labels can occur as values) are usually defined by interpreters which 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.

The content you want is available to Zendy users.

Already have an account? Click here to sign in.
Having issues? You can contact us here
Accelerating Research

Address

John Eccles House
Robert Robinson Avenue,
Oxford Science Park, Oxford
OX4 4GP, United Kingdom