_由 jare_ 评论:
> 请注意,并非每个值都可以携带元数据(数字、字符串等),但这是一个有趣的想法。
这不是什么大问题,因为元数据将主要用于递归/嵌套规范的工具开发者。而那些想要使用它的人可以通过包装原始数据来克服这个限制。
对于最终用户API,类似 spec/explain(s/explain-data, s/explain-str..) 的功能会很棒。
我将称之为 s/complexity,该函数接受一个规范,并返回一个与原始规范形状相同(在 s/complexity-data 的情况下)的结构,其中填充了生成复杂性数据(平均时间、尝试次数、MB 规范形式等)。它应该以合理的方式处理过于复杂的规范,即,而不是抛出错误(如生成器那样),它最好是报告规范的哪个部分过于复杂以及它的各个元素的复杂性。