(rontolisp) docs
← Reference

(clojure.set)

The relational set library, reached as alias/var, clojure.set/var, or a referred bare var; each works as a function value too. The algorithms are the oracle's: union grows its largest input, intersection shrinks its smallest, difference and select shrink the first, so an input nothing changes is answered itself and nil stays nil. A relation is a set of maps, records included.

NameExampleResult
clojure.set/union(clojure.set/union #{1} #{1})#{1}
clojure.set/intersection(clojure.set/intersection #{1 2} #{2 3})#{2}
clojure.set/difference(clojure.set/difference #{1 2} #{2})#{1}
clojure.set/select(clojure.set/select odd? #{1 2})#{1}
clojure.set/project(clojure.set/project #{{:a 1 :b 2}} [:a])#{{:a 1}}
clojure.set/rename-keys(clojure.set/rename-keys {:a 1} {:a :b}){:b 1}
clojure.set/rename(clojure.set/rename #{{:a 1}} {:a :b})#{{:b 1}}
clojure.set/index(clojure.set/index #{{:a 1}} [:a]){{:a 1} #{{:a 1}}}
clojure.set/map-invert(clojure.set/map-invert {:a 1}){1 :a}
clojure.set/join(clojure.set/join #{{:a 1}} #{{:a 1 :b 2}})#{{:a 1, :b 2}}
clojure.set/subset?(clojure.set/subset? #{1} #{1 2})true
clojure.set/superset?(clojure.set/superset? #{1 2} #{1})true