Hi! Something like this has been discussed several times. You might find the following pitch to be edifying:
Similarly:
In the latter thread, @Ben_Cohen (from the core team) writes:
I think there is a lot of room for ergonomic improvements to sorting, so it's great to see this!
I would suggest, though, taking a step back and thinking about all the different aspects of this as a a whole. Individual targeted fixes are nice, but risk API sprawl when they handle some cases not others, leading to other targeted fixes.
Some topics to consider:
- key paths vs closures
- note, localized/caseless sorting is also painful, but at least doable, with closure-based arguments
- including weighing the pros/cons of parametrizing with ascending/descending choice (not a technique that sits well with the existing idioms used in the std lib)
- sorting by a sequence of comparators, lexicographically
- partial sorting/partitioning
A great place to start would be a comparison with the existing APIs to be found in other places i.e. Java, Ruby, Cocoa (which has all sorts of different ways to sort,
sortUsingDescriptors
being particularly of interest).