]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences.extras: Add head-as, head*-as, tail-as, tail*-as.
authorDoug Coleman <doug.coleman@gmail.com>
Thu, 25 Oct 2012 18:38:31 +0000 (11:38 -0700)
committerDoug Coleman <doug.coleman@gmail.com>
Thu, 25 Oct 2012 18:38:31 +0000 (11:38 -0700)
extra/sequences/extras/extras-tests.factor
extra/sequences/extras/extras.factor

index 4d16eb2abd423a702a4f1a3aef5445189541bc7c..8fb91c2e2aab869d4aa71f16463b6c934d4486eb 100644 (file)
@@ -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
+
index ef04243ff4ef5e6ef19dddedcfc7fab8c0a66f69..e911bf3b748522fb7a2243c1dfe3967c65e9d72b 100644 (file)
@@ -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