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.