有一个具有描述规格形式的功能的规范将非常有用,这样可以从如clojure.spec/keys的规格形式像 (s/keys :req [::a ::b] :opt [::c]) 转换为符合版本,让用户可以获取部分内容而不解析s表达式。这可以通过创建规范来实现,从而允许:
user=> (require '[clojure.spec :as s] '[clojure.spec.specs])
user=> (s/def ::aspec (s/keys :req [::a ::b] :opt [::c]))
user=> (def aspec-data (s/conform :clojure.spec.specs/spec (s/form ::aspec)))
user=> (pr aspec-data)
[:form {:s clojure.spec/keys,
:args {:req [[:key :clojure.spec.specs/a] [:key :clojure.spec.specs/b]],
:opt [:clojure.spec.specs/c]}}]
user=> (map val (-> aspec-data val :args :req))
(:clojure.spec.specs/a :clojure.spec.specs/b)
*修复:spec-forms.patch(一个正在进行的工作)