]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/assocs/extras/extras.factor
assocs.extras: add collect-index-by
[factor.git] / 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