X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=blobdiff_plain;f=core%2Fsequences%2Fsequences.factor;h=3d22801ef4a6d07ecab8ef9e23238d6de7c577aa;hp=5a8ef341eeb49e12b30f2a76218591ceca9f455a;hb=4d84afe46f70a34880dfd44822326d06e9fbf99d;hpb=458848d43c085d649c58f0fbb399c4b6608f892f diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index 5a8ef341ee..3d22801ef4 100644 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -423,14 +423,14 @@ PRIVATE> : 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 +: collect-into ( quot into -- quot' ) + [ [ keep ] dip set-nth-unsafe ] 2curry ; inline -: sequence-operator-last-from ( seq quot i -- n quot' ) - -rot length-operator-last nip ; inline +: collect-from ( i n quot into -- ) + collect-into each-integer-from ; inline : collect ( n quot into -- ) - [ [ keep ] dip set-nth-unsafe ] 2curry each-integer ; inline + collect-into each-integer ; inline : sequence-index-operator ( seq quot -- n quot' ) [ length-iterator [ keep ] curry ] dip compose ; inline @@ -475,11 +475,14 @@ PRIVATE> 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 @@ -555,11 +558,11 @@ PRIVATE> 2over bounds-check? [ call ] [ 3drop f f ] if ; inline : find-from-unsafe ( ... n seq quot: ( ... elt -- ... ? ) -- ... i elt ) - [ rot sequence-operator-from find-integer-from ] keepd + [ length-operator find-integer-from ] keepd index/element ; inline : find-last-from-unsafe ( ... n seq quot: ( ... elt -- ... ? ) -- ... i elt ) - [ rot sequence-operator-last-from find-last-integer ] keepd + [ length-operator-last nip find-last-integer ] keepd index/element ; inline PRIVATE>