Object: Identity vs. Environment

John W. Sarkela sarkela at sbcglobal.net
Wed May 28 14:26:46 UTC 2003


On Tuesday, May 27, 2003, at 11:17 PM, Andreas Raab wrote:

> Hi Joel,
>
[... snip ...]
>> In the croquet doc:
>> http://glab.cs.uni-magdeburg.de/~croquet/downloads/Croquet0.1.pdf
>>
>> "This means that a user only has to think of one syntax-semantic
>> relationship. *Receiver message* means *the meaning is in the 
>> receiver*"
>> (*'s around italics)
>>
>> In the example of #isFoo, following the above guideline would
>> certainly preclude #isFoo being placed on Object.
>
> No, quite to the contrary. It merely means that all objects are 
> capable of
> responding to #isFoo without having to make specific assumptions about 
> the
> kind of object. In other words, putting the method #isFoo into Object
> _enables_ us to put the true meaning into the receiver rather than 
> having to
> make assumptions about the kind of object we're dealing with.
>
> Cheers,
>   - Andreas
>
Andreas is absolutely right on this account. A single hierarchy will 
never satisfy all programmer intents when drawing distinctions. Thus, 
it has become a Smalltalk idiom to use predicates of the form #isFoo to 
allow us to draw the distinction between all things Foo and all things 
not Foo. Since the space that is being cleaved by the distinction 
#isFoo is the space of Objects, it is mathematically most correct to 
define isFoo in Object to return <false> and override that definition 
to return <true> for all classes whose instances belong to the 
distinction Foo. In fact, there may even be classes whose instances 
need to introspect to determine their Fooness. Note, that even though 
this behavior is introduced in the distinction of Object, it is up to 
each individual object to introspect to determine how it responds to 
the message #isFoo, and the sender needn't know how the receiver 
determined its answer.

The point is that #isFoo is a distinction. A distinction that cleaves 
the space of objects. Thus one definition in object class sets the 
stage by implicitly saying once "everything not declared to be a Foo is 
most certainly not a Foo.

I strongly urge everyone on the list to read "The Laws of Form" by G. 
Spencer Brown. It is a deeply profound little book. It is also the only 
math book I am aware of that dares to talk about the meaning and intent 
of its basic terms.

:-}> John Sarkela



More information about the Squeak-dev mailing list