如果nil达到,例如clojure.set/union
或clojure.set/intersection
,输出将取决于位置。我认为这些函数应该返回一个始终为hash-set集合,而不管nil
或其位置。
$ clj
Clojure 1.10.3
user=> (require '[clojure.set :refer [intersection union]])
nil
user=> (union #{} nil)
#{}
user=> (union nil #{})
nil
user=> (intersection #{} nil)
#{}
user=> (intersection nil #{})
nil
user=> (union #{} nil nil)
nil
user=> (union nil #{} nil)
nil
user=> (union nil nil #{})
#{}
user=> (intersection #{} nil nil)
nil
user=> (intersection nil #{} nil)
nil
user=> (intersection nil nil #{})
#{}
在我看来,参数的顺序不应该很重要,应该是始终为一个集合,并假设nil
为一个空集合。此外,如果打算稍后调用(set-of-things thing)
,则可能引发异常(这正是让我困惑的事情)。
这也许不仅仅局限于并集和交集,可能还有更多函数有这个问题