Hi --

On Wed, 20 Apr 2005, Jim Weirich wrote:

>
> David A. Black said:
>> I have some trouble applying the quotation to Ruby, since classes make
>> but don't determine the properties of objects,
>
> I think you misunderstand "properties".  It is true that the class does
> not (directly) influence the attributes/instance variables of an object.
> But properties also include the methods of the object, which are directly
> influenced by the class.

I was actually thinking of methods, mainly.  And you've swapped in a
new wording :-)  I'd go along with "directly influenced", but not
"determined"; that is, an object's "birth class" certainly has a role
to play in the object's method capabilities, but is not a determinant.

> Actually, the objections regarding "making objects" and "instance variable
> properties" goes more to saying that the singleton classes of classes are
> not /classes/, rather than saying they are not /meta/.

I must have garbled something I said somewhere along the line; I
definitely would never (knowingly :-) suggest that singleton classes
are not classes.  See below....

> What I was trying to focus on is the tendency for folks to call /any/
> singleton class a metaclass.  I was just arguing that not all singleton
> classes are metaclasses.  I guess we can continue to discuss whether some
> subset of singleton classes might be metaclasses.

What I got from the quotation, and your gloss on it, was that
"metaclass" is recognized (outside of Ruby) to mean a factory for
classes, and that therefore it could be used to refer to a Class
object's singleton class.  I would argue the opposite: singleton
classes, in every case, are non-factories, so to the extent that
"metaclass" might suggest factory-ness (i.e., factory of Class
objects), it could be misleading -- not only as a general term for
"singleton class" (which we both agree it isn't), but even as a
specialized term for "singleton class of Class object".

Correspondingly, if there is a "template for making cookie cutters
themselves" (to paraphrase) in Ruby, it would be the object Class
itself.  So Class could be called *the* metaclass :-)


David

-- 
David A. Black
dblack / wobblini.net