On Thu, Nov 15, 2018 at 5:36 PM Eliot Miranda <eliot.miranda@gmail.com> wrote:
Hi Bert,

On Thu, Nov 15, 2018 at 4:38 PM Bert Freudenberg <bert@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.

Makes sense. The version you posted ("I would have written...") still delegated to super>>= so I thought we wanted to keep that. But I agree that it's of little utility.

- Bert -