]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences.extras: adding extract!.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 28 Jun 2019 18:27:23 +0000 (11:27 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 28 Jun 2019 18:27:23 +0000 (11:27 -0700)
It's similar to reject! but returns the items that were removed.

extra/sequences/extras/extras-tests.factor
extra/sequences/extras/extras.factor

index aec14a8dc6ede9a23543171d5fb445a393e7c749..762660f9cf84482b87d91e97df1bc4a544154ae3 100644 (file)
@@ -281,3 +281,5 @@ tools.test vectors vocabs ;
 { 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
+
+{ SBUF" aco" SBUF" ftr"  } [ SBUF" factor" dup [ even? ] extract! ] unit-test
index cb75baa409677ab0125665fa6bca66057269cc00..26b343bc7bb96b303192d0858bf1d242252e1493 100644 (file)
@@ -649,3 +649,7 @@ PRIVATE>
 
 : interleaved ( seq glue -- newseq )
     over interleaved-as ;
+
+: extract! ( ... seq quot: ( ... elt -- ... ? ) -- ... seq )
+    [ dup ] compose over [ length ] keep new-resizable
+    [ [ push-if ] 2curry reject! ] keep swap like ; inline