Существует ли идиоматический способ определения того, содержит ли LazySeq элемент? Начиная с Clojure 1.5 вызов contains?
вызывает исключение IllegalArgumentException:
IllegalArgumentException contains? not supported on type: clojure.lang.LazySeq
clojure.lang.RT.contains (RT.java:724)
До 1.5, насколько я знаю, он всегда возвращал false.
Я знаю, что вызов contains?
на LazySeq никогда не может вернуться, поскольку он может быть бесконечным. Но что, если я знаю, что это не так и не волнует, если он оценивается с нетерпением?
Я придумал следующее:
(defn lazy-contains? [col key]
(not (empty? (filter #(= key %) col))))
Но это не совсем правильно. Есть ли лучший способ?