Very strange bug on Streams and probably compiler
Roel Wuyts
Roel.Wuyts at ulb.ac.be
Wed Feb 14 22:14:16 UTC 2007
No, you did not get the point.
Would you say that:
(Collection new add: $f; add: $o; add: $o; yourself) == (Collection
new add: $f; add: $o; add: $o; yourself) ?
Besides, the last example in my mail is also worth explaining...
On 14 Feb 2007, at 14 February/20:58, Bert Freudenberg wrote:
> On Feb 14, 2007, at 20:27 , Roel Wuyts wrote:
>
>> 'foo' = 'foo' true "ok"
>> 'foo' == 'foo' true "NOT OK"
>> [...]
>> I can only conclude that this is really not what you want.....
>
> Why? If you want to test for identity, use a Symbol.
:-)
>
> IMHO this is splitting hairs over a non-issue. The issue is
> mutability of literals.
If Squeak is the only Smalltalk that has this behaviour for Strings,
than it shows that is definitely an issue........... I ported T-Gen
and the ParserCompiler, and suddenly this non-trivial issue becomes
vital. We are still unable to port the logic language Soul to Squeak
because of this issue, because, sorry, symbols use a flyweight
pattern and are unique while Strings are collections of characters
and should behave as such. It is a simple issue in itself. Besides,
if it would be only splitting hairs, then why are all beginner's
books full of warning for this issue ? Ever tried to teach Smaltalk
to a class of newbies ? Ever had students come up to you because when
they find some examples in a book or on the web and they tried in
Squeak the results are different ? Think about Smalltalk being this
nice and clean language where everything is logical and then having
to remember by heart some stupid rules because I am splitting
hairs ???????
Besides, have a look at the last part of my mail. Would you not
consider this wrong ? Depending on whether you call the behaviour
from a method or not you get different behaviour ???????????????
[PS: Yes, you hit a sore spot there]
--
Roel
More information about the Squeak-dev
mailing list
|