Metaclasses are First Class: the ObjVlisp Model

This paper shows how an attempt at a uniform and reflective definition resulted in an open-ended system supporting ObjVlisp, which we use to simulate object-oriented language extensions. We propose to unify Smalltalk classes and their terminal instances. This unification allows us to treat a class as a “first class citizen”, to give a circular definition of the first metaclass, to access to the metaclass level and finally to control the instantiation link. Because each object is an instance of another one and because a metaclass is a real class inheriting from another one, the metaclass links can be created indefinitely. This uniformity allows us to define the class variables at the metalevel thus suppressing the Smalltalk-80 ambiguity between class variables and instance variables: in our model the instance variables of a class are the class variables of its instances.

[1]  Pierre Cointe Metaclasses are first class: The ObjVlisp Model , 1987, OOPSLA 1987.

[2]  Niklaus Wirth,et al.  On the Design of Programming Languages , 1974, IFIP Congress.

[3]  Douglas R. Hofstadter,et al.  Godel, Escher, Bach: An Eternal Golden Braid. , 1980 .

[4]  Alan Borning,et al.  Deltatalk: An Empirically and Aesthetically Motivated Simplification of the Smalltalk-80 Language , 1987, ECOOP.

[5]  Pattie Maes,et al.  Concepts and experiments in computational reflection , 1987, OOPSLA '87.

[6]  Walter Hamscher,et al.  Joshua: Uniform Access to Heterogeneous Knowledge Structures, or why Joshing Is Better than Conniving or Planning , 1987, AAAI.

[7]  Pattie Maes,et al.  Computational reflection , 1987, The Knowledge Engineering Review.

[8]  Mary Shaw,et al.  Toward relaxing assumptions in languages and their implementations , 1980, SIGP.

[9]  David A. Moon,et al.  Object-oriented programming with flavors , 1986, OOPLSA '86.

[10]  Joannes M. Lucassen Types and Effects Towards the Integration of Functional and Imperative Programming. , 1987 .

[11]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..

[12]  Pierre Cointe,et al.  Programming with Explicit Metaclasses in Smalltalk-80 , 1989, OOPSLA.

[13]  Pierre Cointe,et al.  A Uniform Model for Object-Oriented Languages Using the Class Abstraction , 1987, IJCAI.

[14]  Thomas E. Anderson,et al.  The performance implications of thread management alternatives for shared-memory multiprocessors , 1989, SIGMETRICS '89.

[15]  Glenn Krasner,et al.  Smalltalk-80: bits of history, words of advice , 1983 .

[16]  Pattie Maes Concepts and experiments in computational reflection , 1987, OOPSLA 1987.

[17]  Daniel G. Bobrow,et al.  CommonLoops: merging Lisp and object-oriented programming , 1986, OOPLSA '86.

[18]  Nicolas Graube Metaclass Compatibility , 1989, OOPSLA.