]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences.extras: Add set-nths and set-nths-unsafe for setting many indices in a...
authorDoug Coleman <doug.coleman@gmail.com>
Thu, 25 Oct 2012 23:14:07 +0000 (16:14 -0700)
committerDoug Coleman <doug.coleman@gmail.com>
Thu, 25 Oct 2012 23:14:07 +0000 (16:14 -0700)
extra/sequences/extras/extras-tests.factor
extra/sequences/extras/extras.factor

index 8fb91c2e2aab869d4aa71f16463b6c934d4486eb..8e4fee89d8747e5df9f43399cfd081c3779566a5 100644 (file)
@@ -158,3 +158,9 @@ IN: sequences.extras.tests
 { "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
 
+{ { 1 0 0 1 0 0 0 1 0 0 } }
+[ 1 { 0 3 7 } 10 0 <array> [ set-nths ] keep ] unit-test
+
+{ { 1 0 0 1 0 0 0 1 0 0 } }
+[ 1 { 0 3 7 } 10 0 <array> [ set-nths-unsafe ] keep ] unit-test
+
index e911bf3b748522fb7a2243c1dfe3967c65e9d72b..93e1555e94100a1fd534ec2622a6c30b79276496 100644 (file)
@@ -356,3 +356,9 @@ PRIVATE>
     [ length ] keep ensure swap pick (a,b]
     over '[ [ 1 + ] keep _ move-unsafe ] each
     set-nth-unsafe ;
+
+: set-nths ( value indices seq -- )
+    swapd '[ [ _ ] dip _ set-nth ] each ; inline
+
+: set-nths-unsafe ( value indices seq -- )
+    swapd '[ [ _ ] dip _ set-nth-unsafe ] each ; inline