]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences.extras: fix find-last-index
authorDoug Coleman <doug.coleman@gmail.com>
Fri, 29 Jul 2022 19:26:35 +0000 (14:26 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Sun, 31 Jul 2022 18:24:59 +0000 (13:24 -0500)
extra/sequences/extras/extras.factor

index 81bf964762b59cd8017ab9656a4fb1bfb771a5e0..3d17c3e7556b62ece0a4897630cd22e7ffc36624 100644 (file)
@@ -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 )