2024 Clojure 状态调查! 中分享您的想法。

欢迎!有关如何工作的更多信息,请参阅 关于页面

0 投票
规范

{{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}} 将不会做任何事情,并保持原样。

2 个答案

0 投票

评论者:sohta

添加了补丁。

0 投票
参考: https://clojure.atlassian.net/browse/CLJ-2227(由 sohta 报告)
...