Article View: comp.lang.clos
Article #693Metaclass inheritance?
From: Fernando Mato Mira
Date: Fri, 08 Jan 1993 14:42
Date: Fri, 08 Jan 1993 14:42
39 lines
2166 bytes
2166 bytes
Let's say you have a metaclass ATTRIBUTED-CLASS, so when you do (defclass foo () () (:metaclass attributed-class)) you get something like #<ATTRIBUTED-CLASS SCHEMA @ #x10f7f26a> Then somebody comes and does (defclass bar (foo) ()) and he gets #<STANDARD-CLASS BAR @ #x10f82c02> when what he really needs is #<ATTRIBUTED-CLASS BAR @ #x10f82c02> and you would like to hide the implementation-dependent metaclass. I think that in many cases, if you can resolve the set of common subclasses of the set of metaclasses of the direct superclasses of a class to a hierarchy, taking the root of that hierarchy as the default metaclass is the way that you want to go, and not getting just STANDARD-CLASS instead. For disambiguating more complicated cases, or for getting some other metaclass than this default one, the :metaclass option is there. If you do not disambiguate by using the :metaclass option, then getting STANDARD-CLASS as the default would be OK. When a direct superclass of the class being defined is a forward-referenced class, it is treated by the previous algorithm as if its metaclass were STANDARD-CLASS instead of FORWARD-REFERENCED-CLASS. It seems that the only way of implementing this today is by defining an :around method on ENSURE-CLASS-USING-CLASS which is not exactly great to specialize, so maybe taking a look again at this part of the CLOS specification would be a good idea. -- Fernando D. Mato Mira Computer Graphics Lab "Bury GIFs!! Get JPEGed!!!" Swiss Federal Institute of Technology matomira@di.epfl.ch NeXTMail : matomira@lignext.epfl.ch FAX : +41 (21) 693 - 5328
Technical Details
Message-ID:
<1993Jan8.154239@di.epfl.ch>Path:
arc1-ca.pugleaf.net!sparky!uunet!usc!rpi!ghost.dsi.unimi.it!univ-lyon1.fr!chx400!sicsun!disuns2!/!matomiraShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!usc!rpi!ghost.dsi.unimi.it!univ-lyon1.fr!chx400!sicsun!disuns2!/!matomira From: matomira@di.epfl.ch (Fernando Mato Mira) Newsgroups: comp.lang.clos,comp.lang.lisp Subject: Metaclass inheritance? Keywords: CLOS, MOP, :METACLASS (a REAL keyword!! :-) ) Message-ID: <1993Jan8.154239@di.epfl.ch> Date: 8 Jan 93 14:42:39 GMT Sender: news@disuns2.epfl.ch Followup-To: comp.lang.clos Organization: Ecole Polytechnique Federale de Lausanne Lines: 39 Nntp-Posting-Host: disun45.epfl.ch