diff --git a/core/sorting/sorting.factor b/core/sorting/sorting.factor index 511318e00c..a7dcbf86b7 100644 --- a/core/sorting/sorting.factor +++ b/core/sorting/sorting.factor @@ -41,20 +41,18 @@ TUPLE: merge-state push-all-unsafe ; inline : l-next ( merge -- ) - [ [ l-elt ] [ [ 1 + ] change-from1 drop ] bi ] [ accum>> ] bi - push-unsafe ; inline + [ l-elt ] [ [ 1 + ] change-from1 accum>> ] bi push-unsafe ; inline : r-next ( merge -- ) - [ [ r-elt ] [ [ 1 + ] change-from2 drop ] bi ] [ accum>> ] bi - push-unsafe ; inline + [ r-elt ] [ [ 1 + ] change-from2 accum>> ] bi push-unsafe ; inline -: decide ( merge quot: ( elt1 elt2 -- <=> ) -- ? ) +: decide? ( merge quot: ( elt1 elt2 -- <=> ) -- ? ) [ [ l-elt ] [ r-elt ] bi ] dip call +gt+ eq? ; inline : (merge) ( merge quot: ( elt1 elt2 -- <=> ) -- ) over r-done? [ drop dump-l ] [ over l-done? [ drop dump-r ] [ - 2dup decide + 2dup decide? [ over r-next ] [ over l-next ] if (merge) ] if