[squeak-dev] #= ==> #hash issues
cunningham.cb at gmail.com
Tue Nov 20 19:11:58 UTC 2018
Sorry for the excessive delay in responding to these threads.
On Thu, Nov 15, 2018 at 5:36 PM Eliot Miranda <eliot.miranda at gmail.com>
> Hi Bert,
> On Thu, Nov 15, 2018 at 4:38 PM Bert Freudenberg <bert at freudenbergs.de>
>> Somehow I missed Eliot's version, but unsurprisingly he had exactly the
>> same idea (use "last" not "stop" for hash). I'd still think bitXor: is
>> preferable to bitOr, that is the standard way in almost all hash methods.
>> But ...
>> BUT: I forgot about the super fallback in #=. That makes this discussion
>> pretty much moot, because since
>> #(1 2 3) = (1 to: 3) "true"
>> is true, this must also be true:
>> #(1 2 3) hash = (1 to: 3) hash "must be true"
>> So the only proper fix IMHO is to remove #hash from Interval (or replace
>> it with ^super hash and a proper comment)
> We discussed this a couple of weeks ago. There is no need for
> #(1 2 3) = (1 to: 3)
> to be true.
> #(1 2 3) = #[1 2 3]
> isn’t true. And we have hasEqualElements:. So a more coherent approach
> is for the hack that makes intervals equal to arrays be discarded, and the
> hashes kept distinct.
Actually, the hack is that interval is a subclass of SequenceableCollection
with species defined as Array. This makes lots of things very nice - like
#collect: and #select: just work. If we removed #species (which would be
necessary to make interval and array not be equal), that would require
re-implementing these two methods - and many, many more - from the
Basically, that hack is a fundamental part of how the class is built today.
Are we ok with us taking on that much of a change?
>> - Bert -
> best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Squeak-dev