{ { 0 3 } } [ "ABA" "ABAABA" start-all ] unit-test
{ 1 } [ "ABA" "ABABA" count-subseq ] unit-test
{ 2 } [ "ABA" "ABABA" count-subseq* ] unit-test
+
+{ 120000 } [ { 10 20 30 40 50 60 } 1 [ * ] 3 reduce-from ] unit-test
<PRIVATE
-: (each-from) ( i seq -- n quot )
+: (setup-each-from) ( i seq -- n quot )
[ length over [-] swap ] keep '[ _ + _ nth-unsafe ] ; inline
-: each-from ( i seq quot -- n quot' )
- [ (each-from) ] dip compose ; inline
+: setup-each-from ( i seq quot -- n quot' )
+ [ (setup-each-from) ] dip compose ; inline
PRIVATE>
: map-from-as ( ... seq quot: ( ... elt -- ... newelt ) i exemplar -- ... newseq )
- [ -rot each-from ] dip map-integers ; inline
+ [ -rot setup-each-from ] dip map-integers ; inline
: map-from ( ... seq quot: ( ... elt -- ... newelt ) i -- ... newseq )
pick map-from-as ; inline