我无法理解 clojure 的意图。规范
它解决了哪些问题?
我们为什么要使用它?
答案 0 :(得分:26)
规范允许您创建数据和功能的规范。规范是它们的核心预测(基于现有的Clojure谓词)和结构,而不是基于类型,正如您在静态类型语言中看到的那样。通过基于谓词的规范,您可以编写比大多数类型系统更具表现力并使用与代码相同的语言的规范。
在函数上定义的规范指定了args的规范,返回值以及args 和返回的函数。最后一个允许检查比大多数类型或合同系统中检查的更多范围(容易)。
定义规格后,您可以使用它们:
您可以使用规范改进开发(通过澄清和记录您的意图,捕获无效调用,断言数据有效性),测试(捕获无效调用,断言有效性,生成示例数据,并为您的规范生成自动测试#39; ed函数),以及您的生产(通过使用一致性进行解构)。
此外,Clojure核心使用规范将导致更好的错误消息,并扩展核心库使用的开发时间检查,以便更早发现错误。
答案 1 :(得分:8)
关于规范库的那些问题有点广泛,特别是"我们为什么要使用它"部分。 你读过以下内容吗?