2 つのセットがあり、3 つ目のセットを作成する必要があります。これには、2 つ目のセットには存在しない最初のセットの要素が含まれます。
(? #{"a" "b" "c"} #{"b"}) ; -> ["a" "c"]
については知ってdisj
いますが、2 番目の引数がセットではなく要素の場合にのみ機能します。
2 つのセットがある場合は、set differenceを使用できます。
user=> (require 'clojure.set)
user=> (difference #{"a" "b" "c"} #{"b"})
#{"a" "c"}
差分関数がなければ、reduce で簡単に作成できたはずです。
=> (reduce disj #{"a" "b" "c" "d"} #{"b" "d"})
#{"a" "c"}
Reduce は、関数、初期の「アキュムレータ」、およびアキュムレータを変更するためにマップするコレクションを受け取ります。この場合、最初のセットをアキュムレータとして使用し、2 番目のセットから最初のアイテムを削除し、次に次のアイテムを削除する、などです。