Path: utzoo!attcan!uunet!know!zaphod.mps.ohio-state.edu!rpi!julius.cs.uiuc.edu!apple!bionet!arisia!roo!gregor From: gregor@think.com (Gregor Kiczales) Newsgroups: comp.lang.lisp Subject: Re: Prototype methods in CLOS? Message-ID: Date: 17 Sep 90 18:51:31 GMT References: <63236@bu.edu.bu.edu> <15344@shlump.nac.dec.com> Sender: news@parc.xerox.com Organization: Thinking Machines Corporation, Cambridge Mass., USA Lines: 32 In-reply-to: davis@barbes.ilog.fr's message of 17 Sep 90 11:55:30 GMT From: davis@barbes.ilog.fr (Harley Davis) Newsgroups: comp.lang.lisp Subject: Re: Prototype methods in CLOS? I happen to think this isn't such great terminology, largely because the word "level" is somewhat too general for such a specific use. I prefer the term "metainstance" for what Nicolas (and you) call "2nd level instance", because it is a unique term, and it complements the term "metaclass". An object's metaclass is the class of its class; an object's metainstances are the instances of its instances. One problem with the term "metainstance" is that it is appealing to use it to refer to the data representation of instances imposed by the "metaclass". Suppose that a given "metaclass" wants the instances of its instances to be respresented as tagged, 2 word structures, with all the slots in an alist, and supporting finalization. (You can't do this in portable CLOS, but you could imagine doing it with the MOP in an implementation-specific way, or with a more agressively MOPed language.) It is convenient to have a name for that naked storage format, that is the tagged 2 word structure, and also convenient to have a name for "instances" of that naked storage format. "metatype" and "metainstance" are two possible names for these. One the other hand, my personal belief is that CLOS and MOPs of its ilk should stop using the term "metaclass" and instead use the term "class metaobject class." This new term is more precise, and avoids confusion with the much broader power associated with the term "metaclasses" by later languages such as 3-KRS.