> >> >> So questions: > >> >> Is ProtoObject should implement #class? > >> >> Can we move #class method from Object to ProtoObject? > >> >> > >> > > >> > ups....good catch! indeed, we should move it to ProtoObject. > >> > > >> mm.. why? > > > > > > Because ALL objects do have a class. Right? if you want to change the > > semantics of #class then just subclass and change it. > > mmm.. no. > IMO, in pure sense, all objects having behavior. but behavior is not a > class (and we can even have > two classes to discriminate between them). > yes, it is _almost_ a class.. but much more obscure.. i doesn't needs to > be compatible with Class protocol.. You should know pretty well, what > requirements VM side puts > for a valid behavior: - superclass, methoddict, format. > which enables VM to do method lookup and creating an instances. > > now, if you make ProtoObject to answer message #class, one will assume that > the object it answers should conform to a full-fledged Class protocol. > But of course it should not. > > Maybe i nitpicking about terminology.. but i think at that level we > should make it clear: > - all objects having behavior! > - some object's behaviors are Classes > - some object's behaviors are Metaclasses > - but there could be any other. > > I agree with all that. But as you said, I think you are going too low level in details. For example, I would call class to all your previous list. All objects have a class, which can be Class, Metaclass, whatever. In addition, if we don't add #class in ProtoObject, then there are some of broken messages like #cannotInterpret: and #pointsTo since they send #class to self.
-- Mariano http://marianopeck.wordpress.com
