]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences: use length-iterator/length-operator words for 2each 3each
authorDoug Coleman <doug.coleman@gmail.com>
Thu, 18 Aug 2022 23:38:04 +0000 (18:38 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Sun, 26 Feb 2023 23:11:03 +0000 (17:11 -0600)
basis/sequences/unrolled/unrolled.factor
core/sequences/sequences.factor
extra/sequences/extras/extras.factor

index 2aa082fb17c5d51bd63e5762b5d7ec08a9a3bfe4..dda77383986b83d6b4d04f525f31393fd48865da 100644 (file)
@@ -49,7 +49,7 @@ ERROR: unrolled-2bounds-error
     swapd '[ dup _ nth-unsafe swap @ ] ; inline
 
 : (unrolled-2each) ( xseq yseq len quot -- len quot )
-    [ '[ _ ] 2dip ] dip (2each) nip ; inline
+    [ '[ _ ] 2dip ] dip 2length-operator nip ; inline
 
 : unrolled-each-unsafe ( seq len quot: ( x -- ) -- )
     (unrolled-each) unrolled-each-integer ; inline
index 4dde5b95e9eafc32e172123503913160798d3a9e..699bc8738e1b8d88e1e652f725c45fee91fd387f 100644 (file)
@@ -516,21 +516,21 @@ PRIVATE>
 : 2nth-unsafe ( n seq1 seq2 -- elt1 elt2 )
     [ nth-unsafe ] bi-curry@ bi ; inline
 
-: setup-2each ( seq1 seq2 -- n quot )
+: 2length-iterator ( seq1 seq2 -- n quot )
     [ min-length check-length ] 2keep [ 2nth-unsafe ] 2curry ; inline
 
-: (2each) ( seq1 seq2 quot -- n quot' )
-    [ setup-2each ] dip compose ; inline
+: 2length-operator ( seq1 seq2 quot -- n quot' )
+    [ 2length-iterator ] dip compose ; inline
 
 : 3nth-unsafe ( n seq1 seq2 seq3 -- elt1 elt2 elt3 )
     [ nth-unsafe ] tri-curry@ tri ; inline
 
-: setup-3each ( seq1 seq2 seq3 -- n quot )
+: 3length-iterator ( seq1 seq2 seq3 -- n quot )
     [ 3length min min check-length ]
     [ [ 3nth-unsafe ] 3curry ] 3bi ; inline
 
-: (3each) ( seq1 seq2 seq3 quot -- n quot' )
-    [ setup-3each ] dip compose ; inline
+: 3length-operator ( seq1 seq2 seq3 quot -- n quot' )
+    [ 3length-iterator ] dip compose ; inline
 
 : element/index ( i/f seq -- elt/f i/f )
     '[ [ _ nth ] [ f ] if* ] keep ; inline
@@ -598,31 +598,31 @@ PRIVATE>
     (accumulate*) map! nip ; inline
 
 : 2each ( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ) -- ... )
-    (2each) each-integer ; inline
+    2length-operator each-integer ; inline
 
 : 2each-from ( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ) i -- ... )
-    [ (2each) ] dip -rot each-integer-from ; inline
+    [ 2length-operator ] dip -rot each-integer-from ; inline
 
 : 2reduce ( ... seq1 seq2 identity quot: ( ... prev elt1 elt2 -- ... next ) -- ... result )
     -rotd 2each ; inline
 
 : 2map-as ( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... newelt ) exemplar -- ... newseq )
-    [ (2each) ] dip map-integers-as ; inline
+    [ 2length-operator ] dip map-integers-as ; inline
 
 : 2map ( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... newelt ) -- ... newseq )
     pick 2map-as ; inline
 
 : 2all? ( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ? ) -- ... ? )
-    (2each) all-integers? ; inline
+    2length-operator all-integers? ; inline
 
 : 2any? ( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ? ) -- ... ? )
     negate 2all? not ; inline
 
 : 3each ( ... seq1 seq2 seq3 quot: ( ... elt1 elt2 elt3 -- ... ) -- ... )
-    (3each) each-integer ; inline
+    3length-operator each-integer ; inline
 
 : 3map-as ( ... seq1 seq2 seq3 quot: ( ... elt1 elt2 elt3 -- ... newelt ) exemplar -- ... newseq )
-    [ (3each) ] dip map-integers-as ; inline
+    [ 3length-operator ] dip map-integers-as ; inline
 
 : 3map ( ... seq1 seq2 seq3 quot: ( ... elt1 elt2 elt3 -- ... newelt ) -- ... newseq )
     pickd swap 3map-as ; inline
index d2bc9d624ef4c484584d85a878eda159e8d97135..751bcec77cf1a09dabef50b3ab083ac0e819fdfb 100644 (file)
@@ -316,7 +316,7 @@ PRIVATE>
 
 : 3each-from
     ( ... seq1 seq2 seq3 quot: ( ... elt1 elt2 elt3 -- ... ) i -- ... )
-    [ (3each) ] dip -rot each-integer-from ; inline
+    [ 3length-operator ] dip -rot each-integer-from ; inline
 
 : 3map-reduce
     ( ..a seq1 seq2 seq3 map-quot: ( ..a elt1 elt2 elt3 -- ..b intermediate ) reduce-quot: ( ..b prev intermediate -- ..a next ) -- ..a result )
@@ -404,7 +404,7 @@ PRIVATE>
     (2each-index) each-integer ; inline
 
 : 2map-into ( seq1 seq2 quot into -- )
-    [ (2each) ] dip collect ; inline
+    [ 2length-operator ] dip collect ; inline
 
 : 2map! ( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... newelt ) -- ... seq1 )
     pick [ 2map-into ] keep ; inline