next up previous
Next: Static versus dynamic behavioral Up: Implementing behavioral reflection Previous: The 3-Lisp level-shifting processor

   
Other languages

Besides small languages, like Brown [WF88] that essentially embody the ideas of the 3-Lisp LSP in a more formal approach, very few attempts have been made to efficiently implement behavioral reflection. Most languages tackling behavioral reflection rely on interpretive techniques, or refrain from reifying the language processor per se.

In object-oriented languages, proposals have been made using interpretive techniques [Mae87,Fer89]. The CLOS MOP, on the other hand, reifies the treatment of messages in the form of the generic function invocation protocol, but this protocol essentially addresses the issue of method lookup. The method lookup is usually made by a discriminating function, which returns a funcallable object representing the method found. This funcallable object is merely invoked by a funcall, which refers to the standard semantics. The funcallable object representing a method is obtained by calling make-method-lambda. Its standard definition is simply to compile the method lambda definition to obtain a function, but non-standard treatments are also possible [KRB91]. In fact, make-method-lambda appears as a potential entry point to a compile-time MOP (see below). The CLOS MOP is now available in most implementations of CLOS, and an implementation is described in Kiczales et al. [KRB91].


next up previous
Next: Static versus dynamic behavioral Up: Implementing behavioral reflection Previous: The 3-Lisp level-shifting processor
Matt Hurlbut
1998-07-02