diff --git a/core/sequences/sequences-tests.factor b/core/sequences/sequences-tests.factor index 10be0454b9..be1111b826 100644 --- a/core/sequences/sequences-tests.factor +++ b/core/sequences/sequences-tests.factor @@ -1,4 +1,4 @@ -USING: arrays kernel math namespaces sequences kernel.private +USING: arrays kernel math math.order namespaces sequences kernel.private sequences.private strings sbufs tools.test vectors assocs generic vocabs.loader ; IN: sequences.tests @@ -300,3 +300,12 @@ USE: make [ t ] [ 0 array-capacity? ] unit-test [ f ] [ -1 array-capacity? ] unit-test + +[ +lt+ ] [ { 0 0 0 } { 1 1 1 } <=> ] unit-test +[ +lt+ ] [ { 0 0 0 } { 0 1 1 } <=> ] unit-test +[ +lt+ ] [ { 0 0 0 } { 0 0 0 0 } <=> ] unit-test +[ +gt+ ] [ { 1 1 1 } { 0 0 0 } <=> ] unit-test +[ +gt+ ] [ { 0 1 1 } { 0 0 0 } <=> ] unit-test +[ +gt+ ] [ { 0 0 0 0 } { 0 0 0 } <=> ] unit-test +[ +eq+ ] [ { } { } <=> ] unit-test +[ +eq+ ] [ { 1 2 3 } { 1 2 3 } <=> ] unit-test diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index d3a7aba1c3..4dee0b592d 100644 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -586,13 +586,13 @@ PRIVATE> [ empty? not ] filter ; : mismatch ( seq1 seq2 -- i ) - [ min-length iota ] 2keep + [ min-length ] 2keep [ 2nth-unsafe = not ] 2curry - find drop ; inline + find-integer ; inline M: sequence <=> - 2dup mismatch - [ -rot 2nth-unsafe <=> ] [ [ length ] compare ] if* ; + [ mismatch ] 2keep pick + [ 2nth-unsafe <=> ] [ [ length ] compare nip ] if ; : sequence= ( seq1 seq2 -- ? ) 2dup [ length ] bi@ =