From 996dd6442e0e1bb36481f3315c51377b1119a105 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 12 Sep 2008 16:03:47 -0500 Subject: [PATCH] Add indices word --- core/sequences/sequences-tests.factor | 4 +++- core/sequences/sequences.factor | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/core/sequences/sequences-tests.factor b/core/sequences/sequences-tests.factor index 8018fe1cdc..f8765bc946 100755 --- a/core/sequences/sequences-tests.factor +++ b/core/sequences/sequences-tests.factor @@ -265,4 +265,6 @@ M: bogus-hashcode hashcode* 2drop 0 >bignum ; [ { 1 3 7 } ] [ 2 { 1 3 5 7 } remove-nth ] unit-test -[ { 1 3 "X" 5 7 } ] [ "X" 2 { 1 3 5 7 } insert-nth ] unit-test +[ { 1 3 "X" 5 7 } ] [ "X" 2 { 1 3 5 7 } insert-nth ] + +[ V{ 0 2 } ] [ "a" { "a" "b" "a" } indices ] unit-test diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index 57dba9ed4e..b08d6eb2c7 100755 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -480,6 +480,11 @@ PRIVATE> : last-index-from ( obj i seq -- n ) rot [ = ] curry find-last-from drop ; +: indices ( obj seq -- indices ) + V{ } clone spin + [ rot = [ over push ] [ drop ] if ] + curry each-index ; + : nths ( seq indices -- seq' ) swap [ nth ] curry map ;