1

2 つのセットがあり、3 つ目のセットを作成する必要があります。これには、2 つ目のセットには存在しない最初のセットの要素が含まれます。

(? #{"a" "b" "c"} #{"b"}) ; -> ["a" "c"]

については知ってdisjいますが、2 番目の引数がセットではなく要素の場合にのみ機能します。

4

2 に答える 2

7

2 つのセットがある場合は、set differenceを使用できます。

user=> (require 'clojure.set)
user=> (difference #{"a" "b" "c"} #{"b"})
#{"a" "c"}
于 2013-01-08T16:31:27.160 に答える
2

差分関数がなければ、reduce で簡単に作成できたはずです。

=> (reduce disj #{"a" "b" "c" "d"} #{"b" "d"})
#{"a" "c"}

Reduce は、関数、初期の「アキュムレータ」、およびアキュムレータを変更するためにマップするコレクションを受け取ります。この場合、最初のセットをアキュムレータとして使用し、2 番目のセットから最初のアイテムを削除し、次に次のアイテムを削除する、などです。

于 2013-01-09T08:30:54.457 に答える