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

欢迎!请查看 关于 页面,了解更多关于如何使用本站的信息。

0 投票
Spec

这个 spec 应指定生成的集合始终是大小为 4 或 5 的集合,但实际上生成了大小为 4 到 8 的集合

(require '[clojure.spec.alpha :as s] '[clojure.spec.gen.alpha :as gen]) (map count (gen/sample (s/gen (s/coll-of char? :min-count 4 :gen-max 5)))) ;; (4 7 8 8 4 7 4 5 5 7)

原因: s/every-impl 中的最大逻辑是: }. 如果有最大计数,则使用该计数,否则使用 gen-max 或 2*min-count 中的较大值。在这种情况下,2*min-count 为 8。看起来我们不应该生成多于 gen-max 的数据,所以建议将此逻辑更改为: }。

补丁: clj-2202.patch

1 个答案

0 投票
参考: https://clojure.atlassian.net/browse/CLJ-2202 (由 alex+import 报告)
...