]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences.extras: Add assoc-reduce and friends.
authorDoug Coleman <doug.coleman@gmail.com>
Wed, 26 Sep 2012 00:20:41 +0000 (17:20 -0700)
committerDoug Coleman <doug.coleman@gmail.com>
Wed, 26 Sep 2012 00:20:41 +0000 (17:20 -0700)
extra/sequences/extras/extras.factor

index 1e5659cb143630d99b643e76ac4b7af195c5bf76..d8f3bebdc823874b34add88eb4d297f1090d397b 100644 (file)
@@ -336,3 +336,17 @@ PRIVATE>
 
 : reverse-as ( seq exemplar -- newseq )
     [ (reverse) ] [ like ] bi* ;
+
+: assoc-reduce ( ... assoc identity quot: ( ... prev key value -- next ) -- ... result )
+    [ first2 ] prepose reduce ; inline
+    
+: reduce-keys ( ... assoc identity quot: ( ... prev elt -- ... next ) -- ... result )
+    [ drop ] prepose assoc-reduce ; inline
+
+: reduce-values ( ... assoc identity quot: ( ... prev elt -- ... next ) -- ... result )
+    [ nip ] prepose assoc-reduce ; inline
+
+: sum-keys ( assoc -- n ) 0 [ + ] reduce-keys ; inline
+
+: sum-values ( assoc -- n ) 0 [ + ] reduce-values ; inline
+