From f0698ee97f868f2048c2c7605da86b550c179325 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Tue, 17 Jul 2012 15:28:44 -0700 Subject: [PATCH] assocs: faster map>assoc. --- core/assocs/assocs.factor | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/assocs/assocs.factor b/core/assocs/assocs.factor index c48a3bc435..d59b2534ab 100644 --- a/core/assocs/assocs.factor +++ b/core/assocs/assocs.factor @@ -167,7 +167,12 @@ M: assoc assoc-clone-like ( assoc exemplar -- newassoc ) : inc-at ( key assoc -- ) [ 1 ] 2dip at+ ; inline : 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 ) [ [ dupd at ] curry ] keep map>assoc ;