是否有一种惯用的方法来确定 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))))
但感觉不太对劲。有没有更好的办法?