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.

Reply via email to