On 27 May 2012 21:04, Mariano Martinez Peck <[email protected]> wrote: > >> >> >> 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. >
okay i agree. i just don't like that in case of ProtoObject the name of a message is a bit misleading, while perfectly ok for Object. Maybe we should state that in method comment, that only instances of Object and its subclasses are guarantee that answer of #class message are Class.. for ProtoObject (or its direct descendant) is can be anything. > > -- > Mariano > http://marianopeck.wordpress.com > -- Best regards, Igor Stasenko.
