[squeak-dev] #= ==> #hash issues

Chris Cunningham 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>
wrote:

> Hi Bert,
>
> On Thu, Nov 15, 2018 at 4:38 PM Bert Freudenberg <bert at freudenbergs.de>
> wrote:
>
>> 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
superclasses.

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?

-cbc

>
>
>>
>> - Bert -
>>
>>
>>
>
> --
> _,,,^..^,,,_
> best, Eliot
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20181120/ced46c8e/attachment.html>


More information about the Squeak-dev mailing list