{{s/form}} 成功地在 1. } 中将 1 个 unfn
(s/form (s/and #(> % 42))) ;=> (clojure.spec.alpha/and (clojure.core/fn [%] (> % 42)))
但不能在以下情况中
`
(s/form (s/and (s/and #(> % 42))))
;=> (clojure.spec.alpha/and (clojure.spec.alpha/and (fn* [p1__1503#] (> p1__1503# 42))))
; 预期
; (clojure.spec.alpha/and (clojure.spec.alpha/and (clojure.core/fn [%] (> % 42))))
`
这对于嵌套规范中的任何 1. } 形式也同样适用。
原因:{{clojure.spec.alpha/res}} 仅当它直接应用到一个 } 形式时才会调用 {{unfn}}。因此,如果在一个嵌套规范形式中出现了 {{ }} } 形式,{{c.s.a/res}} 将不会做任何事情,并保持原样。