And I would rather like to see another implementation like
< aMagnitude
"Answer whether the receiver is less than the argument."
(self size = aMagnitude size) ifFalse: [
^ self size < aMagnitude size ].
1 to: self size do: [:i |
(self at: i) = (aMagnitude at: i) ifFalse: [
^ (self at: i) < (aMagnitude at: i) ]].
^false.
Norbert
Am 04.11.2011 um 21:13 schrieb Stéphane Ducasse:
> I was thinking that we should get the same bug for you UUID
> because the code right now is
>
> < aMagnitude
> "Answer whether the receiver is less than the argument."
>
> 1 to: self size do: [:i |
> (self at: i) < (aMagnitude at: i) ifTrue: [^true]].
> ^false.
>
>
>>> |a b|
>>> a := UUID fromString: '0608b9dc-02e4-4dd0-9f8a-ea45160df641'.
>>> b := UUID fromString: 'e85ae7ba-3ca3-4bae-9f62-cc2ce51c525e'.
>>> (a > b) = (b > a)
>
> returns true and this looks wrong :)
>
> What do you think?
>
> Stef
>
>
> Begin forwarded message:
>
>> From: Alan Knight <[email protected]>
>> Subject: Re: [vwnc] UUID Sorting Incorrect
>> Date: November 1, 2011 3:19:23 PM GMT+01:00
>> To: Runar Jordahl <[email protected]>
>> Cc: [email protected]
>> Reply-To: [email protected]
>>
>> Thanks. Created AR 64162
>>
>>>
>>> Runar Jordahl
>>> 25 October, 2011 7:13 AM
>>>
>>>
>>> Class UUID is included in beta in VisualWorks 7.8. It seems like #< is
>>> implemented incorrect. If you evaluate the statement below it answers
>>> true:
>>>
>>> |a b|
>>> a := UUID fromString: '0608b9dc-02e4-4dd0-9f8a-ea45160df641'.
>>> b := UUID fromString: 'e85ae7ba-3ca3-4bae-9f62-cc2ce51c525e'.
>>> (a > b) = (b > a)
>>>
>>> The fix is to change the method to this:
>>>
>>> < aMagnitude
>>> "Answer whether the receiver is less than the argument. Add an
>>> initial size check, in anticipation of greater than 128-bit
>>> Smalltalk-specific UUID type."
>>>
>>> | ss ms |
>>>
>>> ss := self size.
>>> ms := aMagnitude size.
>>> ss < ms
>>> ifTrue: [^true]
>>> ifFalse: [
>>> ss > ms
>>> ifTrue: [^false]
>>> ifFalse: [
>>> 1 to: self size do: [:i |
>>> (self at: i) < (aMagnitude at: i) ifTrue: [^true].
>>> (self at: i) > (aMagnitude at: i) ifTrue: [^false]].
>>> ^false]]
>>>
>>>
>>> Runar Jordahl
>>> blog.epigent.com
>>> _______________________________________________
>>> vwnc mailing list
>>> [email protected]
>>> http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
>> _______________________________________________
>> vwnc mailing list
>> [email protected]
>> http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
>