【发布时间】:2018-01-08 22:04:24
【问题描述】:
是否可以根据调用函数的规范生成/推断 clojure 规范:
假设我有一个函数 foo 我已经为它编写了一个规范,在 foo 内部我调用其他函数 bar() 接受 foo 的一些输入(已经有规范),所以我的问题是有可能推断/生成酒吧的规格?任何现有的图书馆?
谢谢
【问题讨论】:
标签: clojure clojure.spec
是否可以根据调用函数的规范生成/推断 clojure 规范:
假设我有一个函数 foo 我已经为它编写了一个规范,在 foo 内部我调用其他函数 bar() 接受 foo 的一些输入(已经有规范),所以我的问题是有可能推断/生成酒吧的规格?任何现有的图书馆?
谢谢
【问题讨论】:
标签: clojure clojure.spec
有https://github.com/stathissideris/spec-provider,您可以使用它来推断条形输出的规格。
我使用它来将推断的规范可视化(在管道中)为形状(在 java 小程序中,借助 quil),以及与前一步(在 emacs 缓冲区中)相比,每个步骤输出之间的差异(在 emacs 缓冲区中) https://vimeo.com/240254456.
【讨论】:
spec-provider!我也看了视频。有机会发布步骤之间差异的代码吗?另一方面,我发现图形表示对我来说不太有用(就我能理解的而言)
好吧,看起来 Clojure typed 有我正在寻找的东西,因为我有 foo 的规范,我可以生成测试,然后推断其他函数的规范和类型化注释。由于 clojure 是动态语言,因此它的实用性已经指定了入口点函数,我们可以从中推断出子函数规范并检查代码库中的一致性(在代码中使用正确的 args 调用的函数)
https://github.com/typedclojure/core.typed
希望这可以帮助其他人
【讨论】: