Если я определил следующую запись:
(defrecord Person [name id])
и следующее:
(s/def ::name string?)
(s/def ::id int?)
(s/def ::person (s/keys :req-un [::name ::id]))
Как я могу гарантировать, что вы не сможете создать человека, который не соответствует спецификации ::person? Другими словами, следующее должно вызвать исключение:
(->Person "Fred" "3")
Я старался:
(s/fdef ->Person :ret ::person)
но звоню:
(->Person "Fred" "3")
не вызывает исключения.
Однако:
(s/conform ::person (->Person "Fred" "3"))
дает ожидаемое:
:clojure.spec/invalid
Спасибо