From 01227b33316917a467ef610f01957b46f85a4ab9 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Thu, 25 Oct 2012 16:14:07 -0700 Subject: [PATCH] sequences.extras: Add set-nths and set-nths-unsafe for setting many indices in a sequence to the same value. --- extra/sequences/extras/extras-tests.factor | 6 ++++++ extra/sequences/extras/extras.factor | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/extra/sequences/extras/extras-tests.factor b/extra/sequences/extras/extras-tests.factor index 8fb91c2e2a..8e4fee89d8 100644 --- a/extra/sequences/extras/extras-tests.factor +++ b/extra/sequences/extras/extras-tests.factor @@ -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 [ set-nths ] keep ] unit-test + +{ { 1 0 0 1 0 0 0 1 0 0 } } +[ 1 { 0 3 7 } 10 0 [ set-nths-unsafe ] keep ] unit-test + diff --git a/extra/sequences/extras/extras.factor b/extra/sequences/extras/extras.factor index e911bf3b74..93e1555e94 100644 --- a/extra/sequences/extras/extras.factor +++ b/extra/sequences/extras/extras.factor @@ -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