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