嗨!
我正在探索clojure.spec.alpha的实现,并发现一组相当“小”(根据我的直观预期)的测试 :)
Clojure spec定义了一组原语,可以将它们组合在一起。
换句话说,Clojure spec定义了一种用于描述结构及其预测性属性的编程语言。
假设spec语义在理由和指南中描述得不太正式,那么您是如何推理声明的语义和spec实现之间的一致性呢?
我预期有一个覆盖基本场景及其有限组合的大测试集——有点像是归纳基础。如果归纳基础是正确的,那么其他的组合也都应该是好的。
您是如何推理clojure.spec.alpha验证实现正确性的?
UPD:根据Alex Miller的第一个答案,将问题背景缩小到验证
这个方面。