:opt specs serve a) as documentation for the spec and b) when using s/keys 
as a generator.

On Wednesday, June 28, 2017 at 2:25:50 PM UTC-5, Dan Burton wrote:
>
> This design is surprising to me. If this is the case, then I don't 
> understand the point of `:opt` for s/keys.
>
> -- Dan Burton
>
> On Wed, Jun 28, 2017 at 2:17 AM, Max Penet <m...@qbits.cc> wrote:
>
>> Hi,
>>
>> It's by design, as the doc of s/keys states:
>>
>> In addition, the values of *all* namespace-qualified keys will be validated
>> (and possibly destructured) by any registered specs. Note: there is
>> no support for inline value specification, by design.
>>
>>
>>
>> So if the ns'ed key in your map is registered as a spec it will be 
>> validated. In theory you could just validate with (s/keys) in your case, 
>> specifying keys in req is useful to check presence and gen and in the case 
>> of opt just for gen. The docstring is terse but dense in meaning/information.
>>
>>
>> On Wednesday, June 28, 2017 at 11:04:34 AM UTC+2, Mamun wrote:
>>>
>>> Hi All,
>>>
>>> Clojure spec keys is considering all key within namespace although it is 
>>> not defined.
>>>
>>> Here is an example 
>>>
>>> (s/def :person/fname string?)
>>> (s/def :person/lname string?)
>>> (s/def :person/id int?)
>>>
>>>  ;;With only fname and lname
>>> (s/def :app/person (s/keys :req [:person/fname :person/lname]))
>>>
>>> ;;Success
>>> (s/explain-str :app/person
>>>                {:person/lname "Abdullah"
>>>                 :person/fname "Mamun"} )
>>>
>>> ;;Success
>>> (s/explain-str :app/person
>>>                {:person/lname "Abdullah"
>>>                 :person/fname "Mamun"
>>>                 :id "123"} )
>>>
>>> ;;fail with namespace id
>>> (s/explain-str :app/person
>>>                {:person/lname "Abdullah"
>>>                 :person/fname "Mamun"
>>>                 :person/id "1234"})
>>>
>>>
>>> Is it bug or am I doing something wrong here?
>>>
>>> Br,
>>> Mamun
>>>
>> -- 
>> 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.
>>
>
>

-- 
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