2012-08-06 13:59:40 -04:00
|
|
|
USING: assocs kernel sequences sequences.private sorting ;
|
|
|
|
IN: sorting.extras
|
|
|
|
|
|
|
|
: argsort ( seq quot: ( obj1 obj2 -- <=> ) -- sortedseq )
|
|
|
|
[ dup length iota zip ] dip
|
|
|
|
[ [ first-unsafe ] bi@ ] prepose
|
2012-09-19 13:23:58 -04:00
|
|
|
sort [ second-unsafe ] map! ; inline
|
2013-04-01 21:35:05 -04:00
|
|
|
|
|
|
|
: map-sort ( ... seq quot: ( ... elt -- ... key ) -- ... sortedseq )
|
2013-04-01 23:31:34 -04:00
|
|
|
[ map ] curry keep zip [ first-unsafe ] sort-with
|
|
|
|
[ second-unsafe ] map ; inline
|