0

Clojure の別のシーケンスに存在するセットから要素を削除しようとしています。しかし、clojure.set/difference期待どおりに機能していないようです。私のエラーはどこですか?

いくつかの例:

空シーケンスの削除

(difference #{3 2} '())

結果:(#{3 2}予想通り)

一部の要素を削除する

(difference #{3 2} '(3))

結果:(#{2}予想通り)

セットに存在しない要素の削除

(difference #{3 2} '(1))

結果:(#{3 2}予想通り)

すべての要素を削除する

(difference #{3 2} '(2 3))

結果:(#{}予想通り)

存在する要素をさらに削除する

(difference #{3 2} '(1 2 3))

結果の代わりにIllegalArgumentException が含まれていますか? タイプではサポートされていません: clojure.lang.PersistentList clojure.lang.RT.contains (RT.java:814)

期待される結果:#{}

そのためclojure.set/difference、結果が空のセットであり、削除される要素のセットが元のセットよりも高いカーディナリティを持つ場合、関数は失敗するようです。しかし問題は、なぜこれがうまくいかないのかということです。これは の合法的な適用だと思いますclojure.set/difference

4

1 に答える 1