log in  |  register  |  feedback?  |  help  |  web accessibility
Logo
Definitional Interpreters for Higher-Order Programming Languages
David Van Horn - UMD
Friday, October 10, 2014, 1:00-2:00 pm Calendar
  • You are subscribed to this talk through .
  • You are watching this talk through .
  • You are subscribed to this talk. (unsubscribe, watch)
  • You are watching this talk. (unwatch, subscribe)
  • You are not subscribed to this talk. (watch, subscribe)
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.

This talk is organized by Kristopher Micinski