]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences: fix `from` words
authorDoug Coleman <doug.coleman@gmail.com>
Thu, 25 Aug 2022 14:10:32 +0000 (10:10 -0400)
committerDoug Coleman <doug.coleman@gmail.com>
Sun, 26 Feb 2023 23:11:03 +0000 (17:11 -0600)
basis/combinators/smart/smart.factor
core/assocs/assocs.factor
core/sequences/sequences.factor

index 8b597a58b4b76c23e5247862084153fd3b016c4d..28a09eb2bcd25c6c40974a0e413522929a193b67 100644 (file)
@@ -158,7 +158,7 @@ MACRO: smart-2map-reduce ( 2map-reduce-quots -- quot )
     [ keys ] [ [ [ ] concat-as ] [ ] map-as ] bi dup length dup '[
         [ [ first ] bi@ _ 2cleave ] 2keep
         [ @ _ [ cleave-curry ] [ cleave-curry ] bi _ spread* ]
-        1 2each-from
+        1 -roll 2each-from
     ] ;
 
 : smart-loop ( ..a quot: ( ..a -- ..b ? ) -- ..b )
index d3d870a94b312f81bff891b275871c05321f8424..4d168127a95b201d1738e71eeec530d8517d7ccd 100644 (file)
@@ -211,12 +211,16 @@ M: assoc values [ nip ] { } assoc>map ;
 
 : at+ ( n key assoc -- ) [ 0 or + ] change-at ; inline
 
+: at+* ( n key assoc -- old ) [ 0 or [ + ] keep swap ] change-at ; inline
+
 : inc-at ( key assoc -- ) [ 1 ] 2dip at+ ; inline
 
 : of+ ( assoc key n -- assoc ) '[ 0 or _ + ] change-of ; inline
 
 : inc-of ( assoc key -- assoc ) 1 of+ ; inline
 
+: inc-at* ( key assoc -- old ) [ 1 ] 2dip at+* ; inline
+
 : map>assoc ( ... seq quot: ( ... elt -- ... key value ) exemplar -- ... assoc )
     dup sequence? [
         [ [ 2array ] compose ] dip map-as
index 130513de13453ae7bcb1f981bcaae4f2e9877d24..4cebf8e263c201d0c2694eff4e17aa77f8a37b89 100644 (file)
@@ -602,8 +602,8 @@ PRIVATE>
 : 2each ( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ) -- ... )
     2length-operator each-integer ; inline
 
-: 2each-from ( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ) i -- ... )
-    [ 2length-operator ] dip -rot each-integer-from ; inline
+: 2each-from ( ... from seq1 seq2 quot: ( ... elt1 elt2 -- ... ) -- ... )
+    2length-operator each-integer-from ; inline
 
 : 2reduce ( ... seq1 seq2 identity quot: ( ... prev elt1 elt2 -- ... next ) -- ... result )
     -rotd 2each ; inline