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
。