So, a second stab at the original post that I deleted a dozen times from anxiety...for posterity.
It's basically a summary of a journey starting with wondering what (s/coll-of (s/or))
would do, since my spec tool generated it for empty collections.
user=> (s/exercise (s/coll-of (s/or)))
ExceptionInfo Unable to construct gen at: [] for: (or)
Ok, let's constrict :count to 0.
user=> (s/exercise (s/coll-of (s/or) :count 0))
ExceptionInfo Unable to construct gen at: [] for: (or)
Huh, didn't work. I'm assuming clojure.spec generates values until it finds an empty one?
Oh, this works though:
user=> (s/exercise empty?)
([#{} #{}] [#{} #{}] [() ()] ...)
I was imagining (s/coll-of nothing?) could generate useful values if it existed.
Sorry about the mess.
Thanks,
Ambrose