Насколько я видел, основные функции Clojure почти всегда работают для разных типов коллекций, например. conj
, first
, rest
и т. Д. Я немного озадачен, почему disj
и dissoc
отличаются друг от друга; у них есть та же подпись:Почему функции `disj` и` dissoc` отличаются от Clojure?
(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 так изысканно так много времени, что это действительно сотрясением мне всякий раз, когда это не :)