diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index 75f3b45b79..3047c3e2a1 100644 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -396,11 +396,14 @@ PRIVATE> : 2nth-unsafe ( n seq1 seq2 -- elt1 elt2 ) [ nth-unsafe ] bi-curry@ bi ; inline +: ((2each)) ( seq1 seq2 -- n quot ) + [ min-length ] 2keep [ 2nth-unsafe ] 2curry ; inline + : (2each) ( seq1 seq2 quot -- n quot' ) - [ - [ min-length ] 2keep - [ 2nth-unsafe ] 2curry - ] dip compose ; inline + [ ((2each)) ] dip compose ; inline + +: (2each-index) ( seq1 seq2 quot -- n quot' ) + [ ((2each)) [ keep ] curry ] dip compose ; inline : 3nth-unsafe ( n seq1 seq2 seq3 -- elt1 elt2 elt3 ) [ nth-unsafe ] tri-curry@ tri ; inline @@ -473,6 +476,9 @@ PRIVATE> : 2each ( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ) -- ... ) (2each) each-integer ; inline +: 2each-index ( ... seq1 seq2 quot: ( ... elt1 elt2 index -- ... ) -- ... ) + (2each-index) each-integer ; inline + : 2reduce ( ... seq1 seq2 identity quot: ( ... prev elt1 elt2 -- ... next ) -- ... result ) [ -rot ] dip 2each ; inline