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` 之外还有其他限定符
- 上面的“执行错误”实际上打印了自身的值,因此很容易看到计数
- 这样会导致无限集合卡住,啊
- 令人惊讶的是,`explain-data` 也会在无限集合上卡住 - 我认为这是一个错误
by
谢谢,我很感激这些观察结果。我不同意“ [...] 实际上打印了值本身,因此很容易看到计数”。

对于人类来说,在向量中数42或1024个项目并不容易 :) spec说明应当使我们的工作更容易。
...