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.

Reply via email to