From cdf7cce0463bea3ea406c7ef5bcac72991413326 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sun, 21 Aug 2022 09:16:34 -0700 Subject: [PATCH] sequences.extras: adding nth-index --- extra/sequences/extras/extras-tests.factor | 7 ++++++- extra/sequences/extras/extras.factor | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/extra/sequences/extras/extras-tests.factor b/extra/sequences/extras/extras-tests.factor index 430e82ea33..53104befe7 100644 --- a/extra/sequences/extras/extras-tests.factor +++ b/extra/sequences/extras/extras-tests.factor @@ -322,4 +322,9 @@ math prettyprint sequences sequences.extras strings tools.test ; { { 5 11 26 61 } } [ V{ 5 16 42 103 } [ - ] { } map-prior-as -] unit-test \ No newline at end of file +] unit-test + +{ f } [ 0 CHAR: a "foo" nth-index ] unit-test +{ 0 } [ 0 CHAR: a "abba" nth-index ] unit-test +{ 3 } [ 1 CHAR: a "abba" nth-index ] unit-test +{ f } [ 2 CHAR: a "abba" nth-index ] unit-test diff --git a/extra/sequences/extras/extras.factor b/extra/sequences/extras/extras.factor index f47ebc5650..027a3af199 100644 --- a/extra/sequences/extras/extras.factor +++ b/extra/sequences/extras/extras.factor @@ -823,3 +823,6 @@ M: virtual-zip-index nth-unsafe over [ seq>> nth-unsafe ] [ 2array ] bi* ; inline INSTANCE: virtual-zip-index immutable-sequence + +: nth-index ( n obj seq -- i ) + [ = dup [ drop 1 - dup 0 < ] when ] with find drop nip ; -- 2.34.1