idk, jfyi?
(->> [1 2 3] (s/explain (s/cat :a (s/* (s/& (complement #{3}) int?)))))
3 - failed: (complement #{3}) in: [2] at: [:a]
=> nil
(->> [1 2 3] (s/conform (s/cat :a (s/* (s/& (complement #{3}) int?)))))
=> :clojure.spec.alpha/invalid
(->> [1 2 3] (s/explain (s/cat :a (s/* (s/& (complement #{3}) int?)) :b (s/? #{3}))))
Success!
(->> [1 2 3] (s/conform (s/cat :a (s/* (s/& (complement #{3}) int?)) :b (s/? #{3}))))
=> {:a [1 2 :clojure.spec.alpha/invalid], :b 3}
^^^^^^^^^^^^^^^^^^^^^^^^^^^
(->> [1 2 3] (s/conform (s/cat :a (s/* (s/and (complement #{3}) int?)) :b (s/? #{3}))))
=> {:a [1 2], :b 3}