factor/extra/sorting/extras/extras.factor

12 lines
406 B
Factor
Raw Normal View History

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
: map-sort ( ... seq quot: ( ... elt -- ... key ) -- ... sortedseq )
[ map ] curry keep zip [ first-unsafe ] sort-with
[ second-unsafe ] map ; inline