assocs: faster map>assoc.

db4
John Benediktsson 2012-07-17 15:28:44 -07:00
parent ee1c45a403
commit f0698ee97f
1 changed files with 6 additions and 1 deletions

View File

@ -167,7 +167,12 @@ M: assoc assoc-clone-like ( assoc exemplar -- newassoc )
: inc-at ( key assoc -- ) [ 1 ] 2dip at+ ; inline : inc-at ( key assoc -- ) [ 1 ] 2dip at+ ; inline
: map>assoc ( ... seq quot: ( ... elt -- ... key value ) exemplar -- ... assoc ) : map>assoc ( ... seq quot: ( ... elt -- ... key value ) exemplar -- ... assoc )
[ [ 2array ] compose { } map-as ] dip assoc-like ; inline dup sequence? [
[ [ 2array ] compose ] dip map-as
] [
[ over assoc-size ] dip new-assoc
[ [ swapd set-at ] curry compose each ] keep
] if ; inline
: extract-keys ( seq assoc -- subassoc ) : extract-keys ( seq assoc -- subassoc )
[ [ dupd at ] curry ] keep map>assoc ; [ [ dupd at ] curry ] keep map>assoc ;