On 27 Sep 2010, at 11:28, Igor Stasenko wrote:

> On 27 September 2010 11:54, Johan Brichau <[email protected]> wrote:
>> 
>> On 27 Sep 2010, at 10:38, Lukas Renggli wrote:
>> 
>>>> Am I wrong?
>>> 
>>> Yes, almost always one should probably use #= instead of #==.
>> 
>> I will add that to the exercise :-)
>> The exercise actually makes students aware of the difference between strings 
>> and symbols (which should be pointer-equal)
>> 
> 
> I think you can avoid using 'equal' word when describing a #== comparison.
> It can be explained as 'test whether comparands are same object or not'
> while #= is test whether two objects equal or not.

Yes, this is exactly what the exercise is doing.
I want them to be aware that equal _symbols_ are the same objects, but that 
equal _strings_ are not, which is why I let them evaluate:

a := #foobar.
b := #foobar.
a == b.

a := 'foobar'.
b := 'foobar'.
a == b

The problem is that evaluating the second snippet also yields true in 
Pharo/Squeak, so I cannot illustrate it using these snippets (which works fine 
in Visualworks, btw).

Yes, this is a compiler optimization and, yes, people should use #= instead of 
#== normally. But imho the optimization yields a wrong semantics, which is why 
I posted the email.

I have absolutely no clue if it can be changed (I am not familiar with the 
compiler implementation *at all*), but I would be happy to look over the 
shoulder of an experienced compiler hacker during the next sprint to learn ;-)

cheers
Johan
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to