Вопрос: Как я могу использовать Clojure? функция в коллекции?


Clojure различны?  метод не принимает коллекцию, а скорее список аргументов

(distinct? x)
(distinct? x y)
(distinct? x y & more)

Так (отличное? 0 0 0 0)  правильно возвращается ложный , в то время как (отличные? [0 0 0 0])  возвращает true. Как я могу использовать различны?  на коллекцию, чтобы передать ей коллекцию [0 0 0 0] вернет false, поскольку коллекция содержит дубликаты?

Я действительно понимаю, что функция работает правильно, но я ищу трюк, чтобы применить его к содержимому коллекции, а не к списку аргументов.

В качестве обходного пути я в настоящее время

(defn coll-distinct? [coll]
   (= (distinct coll) coll))

но я чувствую, что мне не хватает более элегантного способа повторного использования различны?


7


источник


Ответы:


Если вы хотите передать аргументы в качестве seq для функции, используйте apply,

(apply distinct? [1 2 3 1])
; false
(apply distinct? [1 2 3])
; true

17