[ [ 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
: 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