🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.clos
Article #693

Metaclass inheritance?

#693
From: Fernando Mato Mira
Date: Fri, 08 Jan 1993 14:42
39 lines
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!/!matomira

Show 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