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

欢迎!请参阅 关于 页面以了解更多有关此信息的工作原理。

+2 投票
对应
重新标记

[org.clojure/clojure "1.11.0-alpha2"]
clojure.spec.alpha

重现(见 keys 中的 or

(s/def :x/foo int?)
(s/def :x/bar string?)

(s/form (s/keys :req-un [(or :x/foo :x/bar)]))
; => (clojure.spec.alpha/keys :req-un [(or :x/foo :x/bar)])

(s/form (s/and (s/keys :req-un [(or :x/foo :x/bar)])))
;=> (clojure.spec.alpha/and (clojure.spec.alpha/keys :req-un [(clojure.core/or :x/foo :x/bar)]))

是否有办法强制在第一个 form 中让 or 命名空间化?

1 答案

+1 投票

选中
 
最佳答案

或者这里只是一个语言中的符号理解,并不指向 clojure.core/or 函数。它在形式中未命名空间是故意的。

那么,当 `keys` 被包含在 `and` 中时,它应该没有命名空间吗?
哦,这是正确的 - 我认为第二个是错误的。
...