]> gitweb.factorcode.org Git - factor.git/commitdiff
assocs.extras: add collect-index-by
authorDoug Coleman <doug.coleman@gmail.com>
Sat, 4 Mar 2023 04:43:48 +0000 (22:43 -0600)
committerDoug Coleman <doug.coleman@gmail.com>
Sat, 4 Mar 2023 04:43:48 +0000 (22:43 -0600)
extra/assocs/extras/extras.factor

index e4e35522ca08b38b4ada500c6534ff2acb084d2d..b61fe150616c58a9b9b3a852375574d30e1ba853 100644 (file)
@@ -334,3 +334,9 @@ PRIVATE>
 
 : assoc-each* ( ... assoc quot: ( ... value key -- ... ) -- ... )
     assoc-operator* each ; inline
+
+: collect-index-by! ( ... assoc seq quot: ( ... obj -- ... key ) -- ... assoc )
+    rot [ '[ @ swap _ push-at ] each-index ] keep ; inline
+
+: collect-index-by ( ... seq quot: ( ... obj -- ... key ) -- ... assoc )
+    [ H{ } clone ] 2dip collect-index-by! ; inline