(furthermore, changing Interval>>hash to match that of Array in cases like (1 to: SmallInteger minVal) is bound to cause unacceptable performance penalties) Andres Valloud wrote:
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 <black@cs.pdx.edu>:
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 Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project