{{s/form}}可以在1. }中成功unfn
(s/form (s/and #(>= % 42))) ;=> (clojure.spec.alpha/and (clojure.core/fn [%] (clojure.core/>= % 42)))
但不在
`
(s/form (s/and (s/and #(>= % 42))))
;=> (clojure.spec.alpha/and (clojure.spec.alpha/and (fn* [p1__1503#] (clojure.core/>= p1__1503# 42))))
; expected
; (clojure.spec.alpha/and (clojure.spec.alpha/and (clojure.core/fn [%] (clojure.core/>= % 42))))
`
这同样适用于任何嵌套规范中出现的1. }形式。
原因:{{clojure.spec.alpha/res}}只在它直接应用于一个形式时调用{{unfn}}。因此,如果{{* }形式出现在嵌套规范形式中,{{c.s.a/res}}将不执行任何操作,而保持原样。