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))))
しかし、それはまったく正しくありません。より良い方法はありますか?