From: Doug Coleman Date: Fri, 29 Jul 2022 19:26:35 +0000 (-0500) Subject: sequences.extras: fix find-last-index X-Git-Tag: 0.99~1286 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=acbca0bfb087c4fca1b36266528552ac0025908d sequences.extras: fix find-last-index --- diff --git a/extra/sequences/extras/extras.factor b/extra/sequences/extras/extras.factor index 81bf964762..3d17c3e755 100644 --- a/extra/sequences/extras/extras.factor +++ b/extra/sequences/extras/extras.factor @@ -645,15 +645,24 @@ PRIVATE> : count* ( ... seq quot: ( ... elt -- ... ? ) -- ... % ) over [ count ] [ length ] bi* / ; inline +: sequence-index-operator-last ( n seq quot -- n quot' ) + [ [ nth-unsafe ] curry [ keep ] curry ] dip compose ; inline + +: find-last-index-from ( ... n seq quot: ( ... elt i -- ... ? ) -- ... i elt ) + '[ + _ [ sequence-index-operator-last find-last-integer ] keepd + index/element + ] bounds-check-find ; inline + : find-last-index ( ... seq quot: ( ... elt i -- ... ? ) -- ... i elt ) - [ [ 1 - ] dip find-last-integer ] (find-index) ; inline + [ [ length 1 - ] keep ] dip find-last-index-from ; inline : map-find-last-index ( ... seq quot: ( ... elt index -- ... result/f ) -- ... result i elt ) [ find-last-index ] (map-find-index) ; inline :: (start-all) ( seq subseq increment -- indices ) 0 - [ seq subseq find-subseq-from dup ] + [ seq subseq subsequence-starts-from dup ] [ [ increment + ] keep ] produce nip ; : start-all ( seq subseq -- indices )