From: Doug Coleman Date: Sat, 20 Aug 2022 21:50:04 +0000 (-0400) Subject: assocs.extras: add intersect-keys-as and unit tests X-Git-Tag: 0.99~1122 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=baa7f3b31f3686dd30a70a3a32566c3097068e5d;hp=07d2b0364b3301eab16a1ccfb050f5b3edddbd91 assocs.extras: add intersect-keys-as and unit tests --- diff --git a/extra/assocs/extras/extras-tests.factor b/extra/assocs/extras/extras-tests.factor index c8233c6d25..cf7ce6ce37 100644 --- a/extra/assocs/extras/extras-tests.factor +++ b/extra/assocs/extras/extras-tests.factor @@ -296,3 +296,12 @@ USING: arrays assocs.extras kernel math math.order sequences tools.test ; [ [ dup 1 + 2array ] dip ] collect-assoc-by-multi ] unit-test +{ H{ { 1 2 } { 3 4 } } } [ + H{ { 1 2 } { 3 4 } { 5 6 } } + { 1 3 } intersect-keys +] unit-test + +{ { { 1 2 } { 3 4 } } } [ + H{ { 1 2 } { 3 4 } { 5 6 } } + { 1 3 } { } intersect-keys-as +] unit-test diff --git a/extra/assocs/extras/extras.factor b/extra/assocs/extras/extras.factor index 8aee7d6d9d..7073a07438 100644 --- a/extra/assocs/extras/extras.factor +++ b/extra/assocs/extras/extras.factor @@ -217,8 +217,11 @@ PRIVATE> : flatten-values ( assoc -- assoc' ) dup any-multi-value? [ expand-values-set-at flatten-values ] when ; +: intersect-keys-as ( assoc seq exemplar -- elts ) + [ [ of ] with ] dip zip-with-as sift-values ; inline + : intersect-keys ( assoc seq -- elts ) - [ of ] with zip-with sift-values ; inline + over intersect-keys-as ; inline : values-of ( assoc seq -- seq' ) [ of ] with map ; inline