in-sets
out-sets ; inline
-M: dataflow-analysis join-sets 2drop assoc-refine ;
+M: dataflow-analysis join-sets 2drop assoc-intersect-all ;
M: dataflow-analysis ignore-block? drop kill-block?>> ;
<FUNCTOR: define-analysis ( name -- )
: compute-live-out ( basic-block -- live-out )
[ successors>> [ live-in ] map ]
[ dup successors>> [ edge-live-in ] with map ] bi
- append assoc-combine ;
+ append assoc-union-all ;
: update-live-out ( basic-block -- changed? )
[ compute-live-out ] keep
outdated-conditional-usages %
changed-definitions get filter-word-defs dup zip ,
- ] { } make assoc-combine keys ;
+ ] { } make assoc-union-all keys ;
M: optimizing-compiler process-forgotten-words
[ delete-compiled-xref ] each ;
"Converting to other assocs:"
{ $subsections assoc-clone-like }
"Combining a sequence of assocs into a single assoc:"
-{ $subsections assoc-combine }
+{ $subsections assoc-union-all }
"Creating an assoc from key/value sequences:"
{ $subsections zip zip-as }
"Creating an assoc from key/value sequences and their indices:"
{ $values { "assoc" assoc } { "quot" { $quotation ( ... key value -- ... ? ) } } { "?" boolean } }
{ $description "Tests if all entries in the assoc satisfy a predicate by applying the quotation to each entry in turn. a predicate quotation to entry in the assoc. Iteration stops if an entry is found for which the quotation outputs " { $link f } ". If the assoc is empty, always outputs " { $link t } "." } ;
-HELP: assoc-refine
+HELP: assoc-intersect-all
{ $values { "seq" sequence } { "assoc" assoc } }
{ $description "Outputs the intersection of all the assocs of the assocs sequence " { $snippet "seq" } ", or " { $link f } " if " { $snippet "seq" } " is empty." } ;
{ $description "Outputs a newly-allocated assoc with the same elements as " { $snippet "assoc" } "." }
{ $examples { $example "USING: prettyprint assocs hashtables ;" "H{ { 1 2 } { 3 4 } } { } assoc-clone-like ." "{ { 1 2 } { 3 4 } }" } } ;
-HELP: assoc-combine
+HELP: assoc-union-all
{ $values
{ "seq" "a sequence of assocs" }
{ "union" assoc } }
{ $description "Takes the union of all of the " { $snippet "assocs" } " in " { $snippet "seq" } "." }
-{ $examples { $example "USING: prettyprint assocs ;" "{ H{ { 1 2 } } H{ { 3 4 } } } assoc-combine ." "H{ { 1 2 } { 3 4 } }" } } ;
+{ $examples { $example "USING: prettyprint assocs ;" "{ H{ { 1 2 } } H{ { 3 4 } } } assoc-union-all ." "H{ { 1 2 } { 3 4 } }" } } ;
HELP: assoc-map-as
{ $values
H{ { 1 3 } }
H{ { 2 3 } }
H{ { 1 2 } }
- } assoc-combine
+ } assoc-union-all
] unit-test
{ H{ { 1 7 } } } [
H{ { 1 2 } { 2 4 } { 5 6 } }
H{ { 1 3 } { 2 5 } }
H{ { 1 7 } { 5 6 } }
- } assoc-refine
+ } assoc-intersect-all
] unit-test
{ f } [ "a" { } assoc-stack ] unit-test
: assoc-union ( assoc1 assoc2 -- union )
over assoc-union-as ;
-: assoc-combine ( seq -- union )
+: assoc-union-all ( seq -- union )
H{ } clone [ assoc-union! ] reduce ;
-: assoc-refine ( seq -- assoc )
+: assoc-intersect-all ( seq -- assoc )
[ f ] [ [ ] [ assoc-intersect ] map-reduce ] if-empty ;
: assoc-differ ( key -- quot )
[ superclass-of [ (mdb-collection) ] [ f ] if* ] if* ; inline recursive
: (mdb-slot-map) ( class -- slot-map )
- superclasses-of [ MDB_SLOTDEF_MAP word-prop ] map assoc-combine ; inline
+ superclasses-of [ MDB_SLOTDEF_MAP word-prop ] map assoc-union-all ; inline
: (mdb-index-map) ( class -- index-map )
- superclasses-of [ MDB_INDEX_MAP word-prop ] map assoc-combine ; inline
+ superclasses-of [ MDB_INDEX_MAP word-prop ] map assoc-union-all ; inline
: split-optl ( seq -- key options )
[ first ] [ rest ] bi ; inline
: set-index-map ( class index-list -- )
[ dup user-defined-key-index ] dip index-list>map 2array
- assoc-combine MDB_INDEX_MAP set-word-prop ; inline
+ assoc-union-all MDB_INDEX_MAP set-word-prop ; inline
M: tuple-class tuple-collection ( tuple -- mdb-collection )
(mdb-collection) ;
(mdb-slot-map) ;
M: mdb-collection mdb-slot-map ( collection -- assoc )
- classes>> [ mdb-slot-map ] map assoc-combine ;
+ classes>> [ mdb-slot-map ] map assoc-union-all ;
M: mdb-persistent mdb-index-map
class-of (mdb-index-map) ;
M: tuple-class mdb-index-map
(mdb-index-map) ;
M: mdb-collection mdb-index-map
- classes>> [ mdb-index-map ] map assoc-combine ;
+ classes>> [ mdb-index-map ] map assoc-union-all ;
<PRIVATE
: name/values ( string -- remain terms )
[ dup { [ empty? not ] [ first CHAR: ` = not ] } 1&& ]
- [ name=value ] produce assoc-combine ;
+ [ name=value ] produce assoc-union-all ;
: parse-txon ( string -- objects )
[ dup empty? not ] [ name=value ] produce nip ;
</dict>
<dict>
<key>match</key>
- <string>(^|(?<=\s))(>alist|<enum>|2cache|\?at|\?of|assoc|assoc>map|assoc-all\?|assoc-any\?|assoc-clone-like|assoc-combine|assoc-diff|assoc-diff!|assoc-differ|assoc-each|assoc-empty\?|assoc-filter|assoc-filter!|assoc-filter-as|assoc-find|assoc-hashcode|assoc-intersect|assoc-like|assoc-map|assoc-map-as|assoc-partition|assoc-refine|assoc-size|assoc-stack|assoc-subset\?|assoc-union|assoc-union!|assoc=|assoc\?|at|at\*|at\+|cache|change-at|clear-assoc|delete-at|delete-at\*|enum|enum\?|extract-keys|inc-at|key\?|keys|map>assoc|maybe-set-at|new-assoc|of|push-at|rename-at|set-at|sift-keys|sift-values|substitute|unzip|value-at|value-at\*|value\?|values|zip|zip-as|zip-index|zip-index-as)(\s|$)</string>
+ <string>(^|(?<=\s))(>alist|<enum>|2cache|\?at|\?of|assoc|assoc>map|assoc-all\?|assoc-any\?|assoc-clone-like|assoc-union-all|assoc-diff|assoc-diff!|assoc-differ|assoc-each|assoc-empty\?|assoc-filter|assoc-filter!|assoc-filter-as|assoc-find|assoc-hashcode|assoc-intersect|assoc-like|assoc-map|assoc-map-as|assoc-partition|assoc-intersect-all|assoc-size|assoc-stack|assoc-subset\?|assoc-union|assoc-union!|assoc=|assoc\?|at|at\*|at\+|cache|change-at|clear-assoc|delete-at|delete-at\*|enum|enum\?|extract-keys|inc-at|key\?|keys|map>assoc|maybe-set-at|new-assoc|of|push-at|rename-at|set-at|sift-keys|sift-values|substitute|unzip|value-at|value-at\*|value\?|values|zip|zip-as|zip-index|zip-index-as)(\s|$)</string>
<key>name</key>
<string>keyword.control.assocs.factor</string>
</dict>
name: "keyword.control.namespaces.factor"
}
{
- match: "(^|(?<=\\s))(>alist|<enumerated>|2cache|\\?at|\\?of|assoc|assoc>map|assoc-all\\?|assoc-any\\?|assoc-clone-like|assoc-combine|assoc-diff|assoc-diff!|assoc-differ|assoc-each|assoc-empty\\?|assoc-filter|assoc-filter!|assoc-filter-as|assoc-find|assoc-hashcode|assoc-intersect|assoc-like|assoc-map|assoc-map-as|assoc-partition|assoc-refine|assoc-size|assoc-stack|assoc-subset\\?|assoc-union|assoc-union!|assoc=|assoc\\?|at|at\\*|at\\+|cache|change-at|clear-assoc|delete-at|delete-at\\*|enum|enum\\?|extract-keys|inc-at|key\\?|keys|map>assoc|maybe-set-at|new-assoc|of|push-at|rename-at|set-at|sift-keys|sift-values|substitute|unzip|value-at|value-at\\*|value\\?|values|zip|zip-as|zip-index|zip-index-as)(\\s|$)"
+ match: "(^|(?<=\\s))(>alist|<enumerated>|2cache|\\?at|\\?of|assoc|assoc>map|assoc-all\\?|assoc-any\\?|assoc-clone-like|assoc-union-all|assoc-diff|assoc-diff!|assoc-differ|assoc-each|assoc-empty\\?|assoc-filter|assoc-filter!|assoc-filter-as|assoc-find|assoc-hashcode|assoc-intersect|assoc-like|assoc-map|assoc-map-as|assoc-partition|assoc-intersect-all|assoc-size|assoc-stack|assoc-subset\\?|assoc-union|assoc-union!|assoc=|assoc\\?|at|at\\*|at\\+|cache|change-at|clear-assoc|delete-at|delete-at\\*|enum|enum\\?|extract-keys|inc-at|key\\?|keys|map>assoc|maybe-set-at|new-assoc|of|push-at|rename-at|set-at|sift-keys|sift-values|substitute|unzip|value-at|value-at\\*|value\\?|values|zip|zip-as|zip-index|zip-index-as)(\\s|$)"
name: "keyword.control.assocs.factor"
}
{