Just a quick guess seeing the implementation

hash for collections is about hash of its elements

SequencableCollection>>hasEqualElements: otherCollection
        "Answer whether the receiver's size is the same as otherCollection's
        size, and each of the receiver's elements equal the corresponding 
        element of otherCollection.
        This should probably replace the current definition of #= ."

        | size |
        (otherCollection isKindOf: SequenceableCollection) ifFalse: [^ false].
        (size := self size) = otherCollection size ifFalse: [^ false].
        1 to: size do:
                [:index |
                (self at: index) = (otherCollection at: index) ifFalse: [^ 
false]].
        ^ true

Cheers,

Cédrick

> Le 30 juil. 2018 à 14:07, werner kassens <wkass...@libello.com> a écrit :
> 
> Hi,
> i guess i can subsume almost everything i know about hashes in one sentence:
> it is my understanding that two objects that are equal (obj1=obj2.
> -->true) have to have the same hash value (which is used for some
> collection types), whereas objects where obj1=obj2 returns false should
> have different hash values although it may happen that they have the
> same one.
> 
> now here things don't turn out exactly like that:
> (1 to:4) = #(1 2 3 4). "true"
> (1 to:4)hash = #(1 2 3 4)hash. "false"
> well ok, actually these results make - pfffh, in a certain way - sense
> to me, but i wonder what arguments the people in the know would use to
> defend that result, if i would have another opinion?
> werner
> 
> 


Reply via email to