I know perfectly well what the problem is.
I explained it in my message: the inherited #reversed
method doesn't know the sortBlock exists.
(So whether it is nil or not is not relevant.)

I also know several ways to fix it, and provided
tested source code for one of them in my message.
Using (a <= b) not would be a bad idea as a
sortBlock is supposed to act like #<=, not like #<.

(That has always puzzled me: why take #< as the
fundamental operation in Magnitude but #<= as the
fundamental operation in sorting?�� But that is
historic and standard practice.)

On 23 April 2018 at 19:10, Erik Stel <erik.stel@gmail.com> wrote:
Richard,

The 'problem' is that the result of the (original) #reverse is a
SortedCollection without a sortBlock. Meaning it defaults to comparing
values using #<=. When a new element is added to the reversed collection it
simply assumes all elements are already sorted and uses the (default)
sortBlock to add a new element.

I think the solution should be to have #reverse add an explicit sortBlock
which consists of reversing the original sortBlock or defaulting to [ a: b:
| (a <= b) not ]. (Keep #<= as some classes might depend on only
implementing this)

Cheers,
Erik




--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html