_评论人士:jare_
> 请注意,并非每个值都可以携带元数据(数字、字符串等),但这是个有趣的想法。
这并非太大问题,因为这个元数据将直接对所有希望为开发者使用的递归/嵌套规范非常有用。想使用这个特性的人可以通过封装基本数据类型来绕过这个限制。
对于最终用户API,类似于spec/explain(s/explain-data, s/explain-str..)的方法将非常理想。
我将称之为s/complexity,该函数接受一个规范并返回与原始规范相同形状的结构(对于s/complexity-data的情况),并用生成复杂度数据(平均时间、尝试次数、规范形式等)填充。它应该以合理的方式来处理过于复杂的规范,即:不是抛出异常(像生成器那样),而是优先报告哪个部分的规范过于复杂以及其元素的个别复杂度。