The implementation of procedurally reflective languages

  • Authors:
  • Jim des Rivières;Brian Cantwell Smith

  • Affiliations:
  • -;-

  • Venue:
  • LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
  • Year:
  • 1984

Quantified Score

Hi-index 0.00

Visualization

Abstract

In a procedurally reflective programming language, all programs are executed not through the agency of a primitive and inaccessible interpreter, but rather by the explicit running of a program that represents that interpreter. In the corresponding virtual machine, therefore, there are an infinite number of levels at which programs are processed, all simultaneously active. It is therefore a substantial question to show whether, and why, a reflective language is computationally tractable. We answer this question by showing how to produce an efficient implementation of a procedurally reflective language, based on the notion of a level-shifting processor. A series of general techniques, which should be applicable to reflective variants of any standard applicative or imperative programming languages, are illustrated in a complete implementation for a particular reflective LISP dialect called 3-LISP.