From bc3f412e1b6e1fa5c1f76dca5d286be994b1ae94 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sat, 19 Feb 2022 19:28:13 -0600 Subject: [PATCH] assocs.extras: Add collect-key-by and collect-value-by --- extra/assocs/extras/extras.factor | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/extra/assocs/extras/extras.factor b/extra/assocs/extras/extras.factor index addd66b5fd..9a6ba7553e 100644 --- a/extra/assocs/extras/extras.factor +++ b/extra/assocs/extras/extras.factor @@ -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 -- 2.34.1