diff --git a/extra/sorting/quick/quick.factor b/extra/sorting/quick/quick.factor index 819fd59beb..be2a5309a8 100644 --- a/extra/sorting/quick/quick.factor +++ b/extra/sorting/quick/quick.factor @@ -1,25 +1,25 @@ ! Copyright (C) 2014 John Benediktsson ! See http://factorcode.org/license.txt for BSD license -USING: combinators kernel locals math math.order sequences -sequences.private ; +USING: arrays combinators kernel locals math math.order +sequences sequences.private strings vectors ; IN: sorting.quick ) -- ) from to < [ from to + 2/ seq nth-unsafe :> pivot from to [ 2dup <= ] [ [ - over seq nth-unsafe pivot quot call( x x -- x ) + over seq nth-unsafe pivot quot call +lt+ eq? ] [ [ 1 + ] dip ] while [ - dup seq nth-unsafe pivot quot call( x x -- x ) + dup seq nth-unsafe pivot quot call +gt+ eq? ] [ 1 - ] while @@ -44,5 +44,9 @@ PRIVATE> : inv-sort-with! ( seq quot: ( elt -- key ) -- ) [ compare invert-comparison ] curry sort! ; inline -: natural-sort! ( seq -- ) - [ <=> ] sort! ; +GENERIC: natural-sort! ( seq -- ) + +M: object natural-sort! [ <=> ] sort! ; +M: array natural-sort! [ <=> ] sort! ; +M: vector natural-sort! [ <=> ] sort! ; +M: string natural-sort! [ <=> ] sort! ;