diff --git a/extra/sequences/extras/extras-tests.factor b/extra/sequences/extras/extras-tests.factor index cbf4b42457..aec14a8dc6 100644 --- a/extra/sequences/extras/extras-tests.factor +++ b/extra/sequences/extras/extras-tests.factor @@ -273,3 +273,11 @@ tools.test vectors vocabs ; { "a_b" } [ "ab" CHAR: _ interleaved ] unit-test { "a_b_c" } [ "abc" CHAR: _ interleaved ] unit-test { "a_b_c_d" } [ "abcd" CHAR: _ interleaved ] unit-test + +{ 0 } [ { 1 2 3 4 } [ 5 > ] count-head ] unit-test +{ 2 } [ { 1 2 3 4 } [ 3 < ] count-head ] unit-test +{ 4 } [ { 1 2 3 4 } [ 5 < ] count-head ] unit-test + +{ 0 } [ { 1 2 3 4 } [ 5 > ] count-tail ] unit-test +{ 2 } [ { 1 2 3 4 } [ 2 > ] count-tail ] unit-test +{ 4 } [ { 1 2 3 4 } [ 5 < ] count-tail ] unit-test diff --git a/extra/sequences/extras/extras.factor b/extra/sequences/extras/extras.factor index 85bf132719..72ee2f6aa9 100644 --- a/extra/sequences/extras/extras.factor +++ b/extra/sequences/extras/extras.factor @@ -629,7 +629,7 @@ PRIVATE> [ dup length ] unless* tail-slice ; inline : count-head ( seq quot -- n ) - [ not ] compose find drop ; inline + [ not ] compose [ find drop ] 2keep drop length or ; inline : count-tail ( seq quot -- n ) [ not ] compose [ find-last drop ] 2keep drop