identity and equivalence in Squeak

shane at shaneroberts.com shane at shaneroberts.com
Thu Feb 13 16:08:28 UTC 2003


I am learning Squeak (and Smalltalk) for the first time,
and I am reading Stephane Ducasse's forthcoming book on 
Squeak, "Learning Programming in Squeak".

Section 5.2 of Chapter 1 discusses  equivalence and identity
of strings and symbols in Squeak.

In a Workspace window I am doing a printit ( Alt-p ) of the
following lines:

'aaa' == 'aaa'
'aaa' = 'aaa'
#aaa == #aaa
#aaa = #aaa

which produces:


'aaa' == 'aaa' true
'aaa' = 'aaa' true
#aaa == #aaa true
#aaa = #aaa true

I thought the first line should produce:
'aaa' == 'aaa' false

since 'aaa' and 'aaa' are equal but not identical (not the same 
object).  Or perhaps they are, in the compiler?
Since they are the same literal constants.

The book says to try these but does not say what the results should 
be.

On the other hand:

a := 'aaa'
b := 'aaa'
a = b
a == b

produces:

a = b false
a == b false

I thought:
a = b

should produce:
a = b true

because a and b are equal (for string comparison) though not 
identical (the same object).

Can anyone tell me what I am missing here?

The book says:
"Try: ’aaa’ == ’aaa’ and #aaa == #aaa."

Thanks,
Shane



More information about the Squeak-dev mailing list