【发布时间】:2015-03-04 00:31:19
【问题描述】:
据我所知,Clojure 的核心功能几乎总是适用于不同类型的集合,例如conj、first、rest 等等。我有点疑惑为什么disj 和dissoc 是不同的;它们具有完全相同的签名:
(dissoc map) (dissoc map key) (dissoc map key & ks)
(disj set) (disj set key) (disj set key & ks)
和相当相似的语义。为什么这些都没有被相同的功能覆盖?我能看到的唯一支持这一点的论点是地图同时具有(assoc map key val) 和(conj map [key val]) 来添加条目,而集合仅支持(conj set k)。
我可以编写一个单行函数来处理这种情况,但是 Clojure 很多时候都非常优雅,以至于当它不是时它真的让我感到不安:)
【问题讨论】:
标签: clojure