]> gitweb.factorcode.org Git - factor.git/commitdiff
assocs.extras: Add collect-key-by and collect-value-by
authorDoug Coleman <doug.coleman@gmail.com>
Sun, 20 Feb 2022 01:28:13 +0000 (19:28 -0600)
committerDoug Coleman <doug.coleman@gmail.com>
Sun, 20 Feb 2022 01:28:13 +0000 (19:28 -0600)
extra/assocs/extras/extras.factor

index addd66b5fdff6a9f60ccdc89fa549332324c9239..9a6ba7553e8ec9ccca0e9ae628edc450ec675043 100644 (file)
@@ -222,3 +222,11 @@ PRIVATE>
 
 : counts ( seq elts -- counts )
     [ histogram ] dip intersect-keys ;
+
+: collect-key-by ( ... seq quot: ( ... obj -- ... key ) -- ... assoc )
+    [ keep swap ] curry H{ } clone
+    [ '[ @ [ first ] dip _ push-at ] each ] keep ; inline
+
+: collect-value-by ( ... seq quot: ( ... obj -- ... key ) -- ... assoc )
+    [ keep swap ] curry H{ } clone
+    [ '[ @ [ second ] dip _ push-at ] each ] keep ; inline