diff --git a/extra/sequences/extras/extras-tests.factor b/extra/sequences/extras/extras-tests.factor index 4d16eb2abd..8fb91c2e2a 100644 --- a/extra/sequences/extras/extras-tests.factor +++ b/extra/sequences/extras/extras-tests.factor @@ -152,3 +152,9 @@ IN: sequences.extras.tests { V{ 1 } } [ 1 0 V{ } [ insert-nth! ] keep ] unit-test { V{ 1 2 3 4 } } [ 2 1 V{ 1 3 4 } [ insert-nth! ] keep ] unit-test + +{ "abc" } [ B{ 97 98 99 100 101 102 103 } 3 "" head-as ] unit-test +{ "abcd" } [ B{ 97 98 99 100 101 102 103 } 3 "" head*-as ] unit-test +{ "defg" } [ B{ 97 98 99 100 101 102 103 } 3 "" tail-as ] unit-test +{ "efg" } [ B{ 97 98 99 100 101 102 103 } 3 "" tail*-as ] unit-test + diff --git a/extra/sequences/extras/extras.factor b/extra/sequences/extras/extras.factor index ef04243ff4..e911bf3b74 100644 --- a/extra/sequences/extras/extras.factor +++ b/extra/sequences/extras/extras.factor @@ -230,6 +230,18 @@ PRIVATE> : contains? ( seq elts -- ? ) [ member? ] curry any? ; inline +: head-as ( seq n exemplar -- seq' ) + [ head-slice ] [ like ] bi* ; inline + +: head*-as ( seq n exemplar -- seq' ) + [ head-slice* ] [ like ] bi* ; inline + +: tail-as ( seq n exemplar -- seq' ) + [ tail-slice ] [ like ] bi* ; inline + +: tail*-as ( seq n exemplar -- seq' ) + [ tail-slice* ] [ like ] bi* ; inline + : trim-as ( ... seq quot: ( ... elt -- ... ? ) exemplar -- ... newseq ) [ trim-slice ] [ like ] bi* ; inline