From: John Benediktsson Date: Sun, 21 Aug 2022 16:16:34 +0000 (-0700) Subject: sequences.extras: adding nth-index X-Git-Tag: 0.99~1120 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=cdf7cce0463bea3ea406c7ef5bcac72991413326 sequences.extras: adding nth-index --- 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 ;