sequences.extras: Add head-as, head*-as, tail-as, tail*-as.

db4
Doug Coleman 2012-10-25 11:38:31 -07:00
parent 83712ad87e
commit 563c15e530
2 changed files with 18 additions and 0 deletions

View File

@ -152,3 +152,9 @@ IN: sequences.extras.tests
{ V{ 1 } } [ 1 0 V{ } [ insert-nth! ] keep ] unit-test { 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 { 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

View File

@ -230,6 +230,18 @@ PRIVATE>
: contains? ( seq elts -- ? ) : contains? ( seq elts -- ? )
[ member? ] curry any? ; inline [ 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-as ( ... seq quot: ( ... elt -- ... ? ) exemplar -- ... newseq )
[ trim-slice ] [ like ] bi* ; inline [ trim-slice ] [ like ] bi* ; inline