问题标签 [clojure.spec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
301 浏览

clojure - 如何指定一个惰性序列生成函数?

我希望在生成器函数的前后条件中使用规范。下面描述了我希望做的一个简化示例:

但是,像这样定义生成器函数似乎会导致堆栈溢出,原因是规范会急切地尝试评估整个事情,或者类似的事情......

是否有另一种使用规范来描述生成器函数的:post结果的方法,例如上面的生成器函数(不会导致堆栈溢出)?

0 投票
1 回答
296 浏览

clojure - 指定记录和地图的不那么冗长的方式?

为地图或记录制定规范的方式是否比官方规范指南中的方式更简洁?

理想情况下,如果我能写一些类似的东西会很好

0 投票
0 回答
168 浏览

clojure - 如何在 clojure.spec 中将生成的值作为单独的参数依赖?

我有以下代码,我正在尝试使用path-and-subpath生成器为(s/fdef conj-set ...).

我不知道如何把这两件事放在一起。我有一个生成元组的生成器,我有一个fdef要指定的依赖参数。如何将它们结合起来?

0 投票
3 回答
295 浏览

recursion - 递归实体规范

我还没有找到任何关于如何执行递归实体规范的示例,就像我在下面尝试的那样。我意识到::leftand::right正在失败,因为它们尚未定义,所以我想知道如何在::node规范中递归地定义它们。

0 投票
1 回答
382 浏览

clojure - clojure.spec 人类可读的形状?

使用 clojure.spec,有没有办法为嵌套地图定义更“人类可读”的规范?以下内容不太好读:

鉴于符合实体的形状类似于

{:a {:c 1 :d "hello"} :b false}

我的抱怨是,如果规范有任何类型的嵌套映射或任何深层结构,阅读规范就会变得困难(呃)……因为你在文件中上下追踪键,而它们不是“就地”声明。

比较一下,类似 schema 的东西允许更易读的嵌套语法,紧密反映实际数据形状:

(m/defschema my-domain-entity {:a {:c sc/number :d sc/string} :b sc/bool})

这可以在 clojure.spec 中完成吗?

0 投票
1 回答
96 浏览

clojure - 如何使用规范定义一系列大小相等的集合?(是否可以?)

我希望表示一系列字符串集合。内部集合应该都具有相同的长度。

我最初的尝试看起来像这样

但是当我练习这个时,我会得到不同长度的内部集合。

是否有一种声明性的方式来指定长度都应该相同?还是只能在规范的自定义生成器函数中指定?

0 投票
1 回答
1483 浏览

clojure - clojure 规范 - 验证地图的内容

我想为具有特定键存在规则的映射创建一个 clojure 规范。

地图必须有一个:type并且可以有一个:default:value但不能同时有。我试过了:

但我得到了

但是or给了我一个错误,因为它的格式错误。我不得不承认对s/or.

0 投票
1 回答
194 浏览

clojure - Integrate clojure spec

This question might be very basic, but I am new to clojure and could not figure out how to proceed with this.

abc.clj :

I am writing clojure spec for this function in another file abc_test.clj.

This test works absolutely fine (test should fail) if I put the function (foo) in abc_test namespace but if I require it (like above), then the test gives incorrect result.

Not sure what is going wrong here. Any heads up shall be helpful.

Thanks.

0 投票
1 回答
131 浏览

clojure - Clojure Spec中的`&`和`and`有什么区别?

我似乎很难区分 Clojure Spec的&和运算符的含义。and他们似乎都在做同样的事情,只有一个被称为正则表达式运算符,我不确定我是否理解其重要性。

0 投票
3 回答
1539 浏览

clojure - 匹配并生成可变长度的有序向量的 Clojure Spec

让我们从常规序列开始

与向量匹配

还有清单

如果我们想限制这一点,我们可以尝试使用spec/tuple; 但遗憾的是它只匹配固定长度的向量,即它至少需要一个空列表作为元组的最后一部分:

我们也可以尝试在::catwith 中添加一个附加条件spec/and

匹配得很好

但遗憾的是未能生成它自己的数据,因为生成器spec/cat只生成当然不符合vector?谓词的列表:

总结一下:如何编写一个既能接受又能生成向量的规范[hi "there"] [my "dear" :friend]

也可以将问题改写为“是否有替代方法spec/cat可以生成向量而不是列表?” 或“是否可以将 :kind 参数传递给spec/cat?” 或“我可以将生成器附加到规范中,该规范获取原始生成器的输出并将其转换为向量吗?”。