Good afternoon,

like obviously quite a few others on this list I am looking into the 
upcoming (and IMHO absolutely great) clojure.spec 
During this I noted that the  ? macro seems to behave differently from what 
I would have naively expected from its documentation (cf. 
https://clojure.github.io/clojure/branch-master/clojure.spec-api.html#clojure.spec/?):

? macro

Usage: (? pred-form)

Returns a regex op that matches zero or one value matching
pred. Produces a single value (not a collection) if matched.


In contract, with the namespaces set to 
[clojure.spec :as s]
[clojure.spec.gen :as gen]

the following snippet

(s/def ::abcd #{:a :b :c :d})
(gen/sample (s/gen (s/? ::abcd)))

returns a collection of collections:
([] [:c] [:d] [:b] [:b] [] [:a] [] [:d] [])

I would have expected to find either the value itself or nothing, a 
behaviour that would seem to me also more practical when composing larger 
records with optional elements. However, I might be misreading the 
documentation and would be grateful for any clarification

Best regards,

Marc

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to