I'd rather make the interval not equal to the array, at least with the message #=. Probably that can't be done safely. If that's the case, I'd say the best approach is to leave it "broken" but documented in terms of "some collections may compare 'reasonably', however, since equality in those cases is not well defined, then the rule a = b => a hash = b hash may be waived". For example, sure, #(1 2 3) = (1 to: 3), however you can't do (1 to: 3) at: 2 put: 5. And 1.0 may be equal to 1, but the numbers represent completely different things so even though the numeric value is the same, equality is ill defined, and so it's not necessary for the hashing rule to apply.
Nicolas Cellier wrote: > http://bugs.squeak.org/view.php?id=3380 > http://bugs.squeak.org/view.php?id=3488 > > 2009/10/24 Andrew P. Black <[email protected]>: > >> The golden rule of hashing is (a = b) => (a hash = b hash). Right? >> >> Look at this: >> >> (1 to: 10) species ---> Array >> #(1 2 3 4 5 6 7 8 9 10) species ---> Array >> >> (1 to: 10) = #(1 2 3 4 5 6 7 8 9 10) ---> true >> >> However, >> >> (1 to: 10) hash = #(1 2 3 4 5 6 7 8 9 10) hash ---> false. >> >> I believe that the last is a bug. >> >> Andrew >> >> >> _______________________________________________ >> Pharo-project mailing list >> [email protected] >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project >> >> > > _______________________________________________ > Pharo-project mailing list > [email protected] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > > _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
