Hi --

On Mon, 18 Apr 2005, why the lucky stiff wrote:

> David A. Black wrote:
>> The tutorial itself looks good, though the terminology in this area
>> continues to be a problem.  My understanding is that the most general
>> term is "singleton class", and that "metaclass" is a special term for
>> singleton class of a Class object.  (See Pickaxe, 2nd ed., p. 382.)
>> So, for example, I would rename your Object#metaclass method
>> #singleton_class, since it applies to all objects (as per RCR 231).
>
> Sure, I'm aware that "virtual class" is the generic term, while Matz has also 
> used "singleton class" and "meta-object" to describe these classes used in 
> tandem with an RObject.
>
> I only use the term "metaclass" because it is the term predominantly used in 
> the PickAxe II.  While Dave does interchangibly use "virtual class" and 
> "singleton class", the only term he uses to generically refer to the 
> construct is "metaclass".
>
> And I really need to be able to wrap these up in a single word, whilst still 
> jiving with the PickAxe.

I read the Pickaxe differently, especially the box on p. 382.  It
paraphrases Matz as having said:  "You can call it _metaclass_ but,
unlike Smalltalk, it's not a class of a class; it's a singleton class
of a class."

I don't think there's any case where Dave refers to a singleton class
as a metaclass, except where the object is a Class, but I could be
wrong about that... ?

Anyway, when RCR 231 gets addressed, we'll find out for sure :-)

(I think I misread the p. 382 thing about "virtual".  It does actually
sound like Matz is accepting it as a synonym for "singleton", though I
avoid it because I don't see anything "virtual" about singleton
classes.  They're objects.)


David

-- 
David A. Black
dblack / wobblini.net