I'd love to see something that at least handles the case of 2 levels of nesting (if we consider the current situation to be one level of nesting), absolutely.
Robby On Mon, Jun 11, 2012 at 2:19 PM, Eli Barzilay <e...@barzilay.org> wrote: > 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! _________________________ Racket Developers list: http://lists.racket-lang.org/dev