为什么Clojure中的集合不接受默认参数?

6
为什么地图和关键字都带有一个额外的默认参数,而集合却没有?
这是实现细节还是具体设计决策呢?
({:a 2} :b :not-found) ;;=> :not-found

(:b {:a 2} :not-found) ;;=> :not-found

;; This seems counter intuitive.
(#{:a} :b :not-found) ;;=> clojure.lang.ArityException

(:b #{:a} :not-found) ;;=> :not-found

1
这肯定是一个可以轻松有用地消除的异常情况:请参见@amalloy的答案 - Thumbnail
1个回答

3
我认为没有什么强制性的原因:他们当然可以这样做,而且对我来说似乎很合理。该功能是在3b7c1612中添加到地图和关键字中的,并且自那时以来就没有被改动过;我想这只是没有包含在最初的提交中,自那以后也没有太好的理由去重新审视那个决定。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接