[racket-dev] [racket] Feature request: multiple keys in sort
A few minutes ago, Robby Findler wrote:
> How about this: until you find the perfect way to do this, we just
> add two new optional keyword arguments to sort that deal with two
> levels of key/sorts? eg:
>
> (sort lst < #:key first #:key2 second)
>
> would mean to sort by < for both keys, treating the first position
> in the list as the main one and the second as a secondary one. And
> then we could also have another keyword for specifying a different
> sorting predicate for the second key, too.
>
> That would actually cover all of the cases that I think I've seen in
> practice.
This looks very limited -- assuming that the direction is the same
seems fine, but I think that it can be common to have different
types[*]. Another point is the question of how it'd interact with
`#:cache-keys?'. And yet another point is that the actual
implementation (in "racket/private/sort.rkt") is way too "involved" to
add this kind of functionality, so if I add something like that, I'd
do that in the keyword wrapper (top of "racket/private/list.rkt") --
and then I can just as well add the kind of combinator I wrote. (And
that trivially covers your case.)
So I'll take this as an excited +1 for the idea to add such a
combinator, possibly enough to just go with the version I wrote
(right?). And if so, any suggestions for a name for the combinator?
([*] As it happens, it looks like the improvement to the docs search
thing that we discussed recently is exactly a case where I'll need to
sort on two keys -- strings and numbers.)
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://barzilay.org/ Maze is Life!