     sequence-operator each-integer-from ; inline
 
 : each-from ( ... seq quot: ( ... x -- ... ) i -- ... )
-    sequence-operator-from each-integer-from ; inline
+    -rot length-operator each-integer-from ; inline
 
 : reduce ( ... seq identity quot: ( ... prev elt -- ... next ) -- ... result )
     swapd each ; inline
 
+: map-integers-from-as ( ... from len quot: ( ... i -- ... elt ) exemplar -- ... newseq )
+    overd [ [ collect-from ] keep ] new-like ; inline
+
 : map-integers-as ( ... len quot: ( ... i -- ... elt ) exemplar -- ... newseq )
     overd [ [ collect ] keep ] new-like ; inline
 

: length-operator-last ( seq quot -- n quot' )
    length-operator [ 1 - ] dip ; inline

: sequence-operator-from ( seq quot i -- i n quot' )
    -rot length-operator ; inline

: sequence-operator-last-from ( seq quot i -- n quot' )
    -rot length-operator-last nip ; inline

: collect ( n quot into -- )
    [ [ keep ] dip set-nth-unsafe ] 2curry each-integer ; inline

: sequence-index-operator ( seq quot -- n quot' )
    [ length-iterator [ keep ] curry ] dip compose ; inline

    2over bounds-check? [ call ] [ 3drop f f ] if ; inline

: find-from-unsafe ( ... n seq quot: ( ... elt -- ... ? ) -- ... i elt )
    [ length-operator find-integer-from ] keepd
    index/element ; inline

: find-last-from-unsafe ( ... n seq quot: ( ... elt -- ... ? ) -- ... i elt )
    [ length-operator-last nip find-last-integer ] keepd
    index/element ; inline

PRIVATE>
