问题标签 [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 回答
1058 浏览

clojure - 使用 Clojure Spec 从递归定义生成

让我们考虑一个用于打嗝语法的 Clojure Spec 正则表达式

效果很好

直到您尝试从规范中为您的函数生成一些示例数据

有没有办法重写规范,以便它产生一个工作生成器?还是我们必须在规范中附加一些简化的生成器?

0 投票
2 回答
1247 浏览

clojure - 没有这样的命名空间:clojurescript 项目设置中的 clojure.spec.alpha

我正在努力学习clojure.spec。在沿着引导构建工具设置 clojure 项目时,我在需要 clojure.spec.alpha 时遇到以下错误。

我的引导配置如下:

我的主要 app.cljs 文件如下:

因为我刚刚开始clojure提出有关此类问题的任何建议,都会非常有帮助。

谢谢

0 投票
1 回答
207 浏览

clojure - clojure.spec 符合抛出堆栈溢出异常

谁能解释一下,下面的例子有什么问题?为什么会抛出 StackOverflowError 异常?

0 投票
1 回答
1081 浏览

clojure - 为具有跨层约束的嵌套数据结构创建 Clojure 规范生成器

我正在使用 Clojure 规范来规范一个简单的数据结构:

该值是在从零到值(含:data)的区间内的等大小整数向量的向量。:max我用规范表达了这一点,如下所示:

自动生成器适用于前三个规格,但不适用于::image. (s/exercise ::image)尝试 100 次后总是失败。

我试图创建一个自定义生成器,::image但没有管理。我看不出如何表达跨越嵌套结构层的约束(键:max约束其他地方的向量中的值)。

是否可以创建一个生成 s 的 Clojure spec/test.check 生成器::image

0 投票
1 回答
82 浏览

clojure - 为什么我的 or-spec 仅对给定的规范之一有效?

考虑以下文本或链路层端口号规范:

出于某种原因,它只接受端口号而不接受文本,为什么会这样?

0 投票
2 回答
225 浏览

clojure - 包含虚假值的集合的 Clojure 规范

出于某种原因,以下规范确实说这false不是有效的::a-thing,即使它是给定集合的一部分。

0 投票
1 回答
409 浏览

clojure - 如何使用 `clojure.spec/+` 限制生成样本的大小?

clojure.spec/coll-of:gen-max选择限制生成的样本大小。有模拟clojure.spec/+吗?

0 投票
3 回答
2442 浏览

clojure - clojure.spec coll-of 替代类型

我正在使用 clojure.spec 来验证地图条目的向量。向量看起来像:

我想将规范构建为需要 1..N::point个条目并且只有一个::user条目。

这是我构建此规范的(不成功的)尝试:

当我只运行一个::point条目的验证时,它可以工作:

关于如何构造s/or部分以使向量条目可以是任何一个::user::point类型的任何想法?

此外,关于如何在向量中要求一个且仅一个::user条目和 1..N个条目的任何想法?::point

0 投票
1 回答
537 浏览

clojure - 如何编写规范,其中地图具有基于另一个键的异构内容的键

我很确定我需要一个多规格的,它可以工作。但我不确定如何说作为向量的键值可以包含异构映射。

我是我想要指定的源数据:

这是validations我遇到问题的键,具体取决于type键,"int"或者"string",我希望validations键中有不同的规范。

我很确定我必须使用multi-spec. 这是我尝试过的:

0 投票
1 回答
580 浏览

clojure - Clojure 规范:如何验证一张或另一张地图

我有这个 Clojure 代码来为回复对象定义我的模式,它可以是

{:message {:text "Hello"} :delay 3000}

或者

{:action "typing_on" :duration 5000}

reply地图可以有:message:action和 分别可选的键:delay:duration

我试图用这种方式表达它clojure.spec

但是,在这种情况下,这些规范将仅使用它们在子句中true找到的第一个模式进行验证。相反,我想要实现的是或者是.or::action-reply::action-reply::message-reply::reply