{ 3/10 } [ 10 <iota> [ 3 < ] count* ] unit-test
-{ { 0 } } [ "ABA" "ABABA" start-all ] unit-test
-{ { 0 2 } } [ "ABA" "ABABA" start-all* ] unit-test
-{ { 0 3 } } [ "ABA" "ABAABA" start-all ] unit-test
-{ 1 } [ "ABA" "ABABA" count-subseq ] unit-test
-{ 2 } [ "ABA" "ABABA" count-subseq* ] unit-test
+{ { 0 } } [ "ABABA" "ABA" start-all ] unit-test
+{ { 0 2 } } [ "ABABA" "ABA" start-all* ] unit-test
+{ { 0 3 } } [ "ABAABA" "ABA" start-all ] unit-test
+{ 1 } [ "ABABA" "ABA" count-subseq ] unit-test
+{ 2 } [ "ABABA" "ABA" count-subseq* ] unit-test
{ 120000 } [ { 10 20 30 40 50 60 } 1 [ * ] 3 reduce-from ] unit-test
: map-find-last-index ( ... seq quot: ( ... elt index -- ... result/f ) -- ... result i elt )
[ find-last-index ] (map-find-index) ; inline
-:: (start-all) ( subseq seq increment -- indices )
+:: (start-all) ( seq subseq increment -- indices )
0
[ [ subseq seq ] dip subseq-start-from dup ]
[ [ increment + ] keep ] produce nip ;
-: start-all ( subseq seq -- indices )
- over length (start-all) ; inline
+: start-all ( seq subseq -- indices )
+ dup length (start-all) ; inline
-: start-all* ( subseq seq -- indices )
+: start-all* ( seq subseq -- indices )
1 (start-all) ; inline
-: count-subseq ( subseq seq -- n )
+: count-subseq ( seq subseq -- n )
start-all length ; inline
-: count-subseq* ( subseq seq -- n )
+: count-subseq* ( seq subseq -- n )
start-all* length ; inline
: assoc-zip-with ( quot: ( key value -- calc ) -- alist )