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

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

+1
规范

使用规范1,似乎计数验证失败可以报告得更好 - 不是很清楚实际的计数是多少

user=> (s/assert (s/coll-of any? :count 1)
            [])
Execution error - invalid arguments to user/eval148 at (REPL:1).
[] - failed: (= 1 (count %))

1 答案

0

:count使用bounded-count,这对无限集合也正常工作。报告实际计数则需要使用count,这会导致无限集合挂起。

这是一个公平的观察!然而,可以检测情况是否易于处理,例如,coll是一个向量吗?

这当然不是一种通用的解决方案,但它可以满足大量实际用例。
还有几点需要指出
- 除了`:count`之外,还有其他限定条件
- 上面提到的“执行错误”实际上会打印数值 itself,所以很容易看到计数
- 上面的情况会导致无限集合 hang,哎
- 惊讶的是,`explain-data`也会在无限集合上 hang - 我想这应该是一个 bug
谢谢,我欣赏你的观察结果。我不同意“[...]实际上打印了值 itself,所以很容易看到计数”。

对于人来说,在向量化 42 或 1024 个项可不是那么容易的 :) spec 说明应该让我们的生活更轻松。
...