diff --git a/core/sorting/sorting.factor b/core/sorting/sorting.factor index 29bcafae20..37407214f7 100644 --- a/core/sorting/sorting.factor +++ b/core/sorting/sorting.factor @@ -153,16 +153,26 @@ PRIVATE> : inv-sort-with ( seq quot: ( elt -- key ) -- sortedseq ) [ compare invert-comparison ] curry sort ; inline + + GENERIC: sort-keys ( obj -- sortedseq ) M: object sort-keys >alist sort-keys ; -M: sequence sort-keys [ first ] sort-with ; +M: sequence sort-keys + 0 check-bounds [ first-unsafe ] sort-with ; GENERIC: sort-values ( obj -- sortedseq ) M: object sort-values >alist sort-values ; -M: sequence sort-values [ second ] sort-with ; +M: sequence sort-values + 1 check-bounds [ second-unsafe ] sort-with ; : sort-pair ( a b -- c d ) 2dup after? [ swap ] when ;