Procedural Reflection in Programming Languages Volume 1
Brian Cantwell Smith’s dissertation that is the base document for reflection in programming languages.
Abstract:
We show how a computational system can be constructed to “reason”, effectively and consequentially, about its own inferential processes. The analysis proceeds in two parts. First, we consider the general question of computational semantics, rejecting traditional approaches, and arguing that the declarative and procedural aspects of computational symbols (what they stand for, and what behaviour they engender) should be analysed independently, in order that they may be coherently related. Second, we investigate self-referential behaviour in computational processes, and show how to embed an effective procedural model of a computational calculus within that calculus (a model not unlike a meta-circular interpreter, but connected to the fundamental operations of the machine in such a way as to provide, at any point in a computation, fully articulated descriptions of the state of that computation, for inspection and possible modification). In terms of the theories that result from these investigations, we present a general architecture for procedurally reflective processes, able to shift smoothly between dealing with a given subject domain, and dealing with their own reasoning processes over that domain.
An instance of the general solution is worked out in the context of an applicative language. Specifically, we present three successive dialects of
LISP: 1-LISP
, a distillation of current practice, for comparison purposes;2-LISP
, a dialect constructed in terms of our rationalised semantics, in which the concept of elevation is rejected in favour of independent notions of simplification and reference, and in which the respective categories of notation, structure, semantics, and behaviour are strictly aligned; and3-LISP
, an extension of2-LISP
endowed with reflective powers. (Warning: Hand copied from an image PDF. Tying errors may have occurred.)
I think reflection as it is described here is very close to Newcomb’s notion of composite subject identities, which are themselves composed of composite subject identities.
Has me wondering what a general purpose identification language with reflection would look like?