你好!
我正在研究 clojure.spec.alpha 的一个实现,并发现了一些相当“小”的测试集(根据我的朴素预期):)
Clojure spec 定义了一组基本构造函数,这些构造函数可以相互组合。
换句话说,Clojure spec 定义了一种语言来描述结构及其预测性质。
假设 spec 的语义在 原理 和 指南 中非正式描述,那么你是如何推理声明语义与 spec 实现之间的对应关系的呢?
我原先预期有一个包含基本场景和大范围组合(类似于归纳基础)的庞大测试集。如果归纳基础是正确的,那么其他组合也应该是好的。
你是如何推理 clojure.spec.alpha 验证实现正确性的呢?
更新:根据 Alex Miller 首次回答,把问题语境缩小到了 验证
方面。