问题标签 [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.
clojure - 如何指定一个惰性序列生成函数?
我希望在生成器函数的前后条件中使用规范。下面描述了我希望做的一个简化示例:
但是,像这样定义生成器函数似乎会导致堆栈溢出,原因是规范会急切地尝试评估整个事情,或者类似的事情......
是否有另一种使用规范来描述生成器函数的:post
结果的方法,例如上面的生成器函数(不会导致堆栈溢出)?
clojure - 指定记录和地图的不那么冗长的方式?
为地图或记录制定规范的方式是否比官方规范指南中的方式更简洁?
理想情况下,如果我能写一些类似的东西会很好
clojure - 如何在 clojure.spec 中将生成的值作为单独的参数依赖?
我有以下代码,我正在尝试使用path-and-subpath
生成器为(s/fdef conj-set ...)
.
我不知道如何把这两件事放在一起。我有一个生成元组的生成器,我有一个fdef
要指定的依赖参数。如何将它们结合起来?
recursion - 递归实体规范
我还没有找到任何关于如何执行递归实体规范的示例,就像我在下面尝试的那样。我意识到::left
and::right
正在失败,因为它们尚未定义,所以我想知道如何在::node
规范中递归地定义它们。
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 中完成吗?
clojure - 如何使用规范定义一系列大小相等的集合?(是否可以?)
我希望表示一系列字符串集合。内部集合应该都具有相同的长度。
我最初的尝试看起来像这样
但是当我练习这个时,我会得到不同长度的内部集合。
是否有一种声明性的方式来指定长度都应该相同?还是只能在规范的自定义生成器函数中指定?
clojure - clojure 规范 - 验证地图的内容
我想为具有特定键存在规则的映射创建一个 clojure 规范。
地图必须有一个:type
并且可以有一个:default
或:value
但不能同时有。我试过了:
但我得到了
但是or
给了我一个错误,因为它的格式错误。我不得不承认对s/or
.
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.
clojure - Clojure Spec中的`&`和`and`有什么区别?
我似乎很难区分 Clojure Spec的&
和运算符的含义。and
他们似乎都在做同样的事情,只有一个被称为正则表达式运算符,我不确定我是否理解其重要性。
clojure - 匹配并生成可变长度的有序向量的 Clojure Spec
让我们从常规序列开始
与向量匹配
还有清单
如果我们想限制这一点,我们可以尝试使用spec/tuple
; 但遗憾的是它只匹配固定长度的向量,即它至少需要一个空列表作为元组的最后一部分:
我们也可以尝试在::cat
with 中添加一个附加条件spec/and
:
匹配得很好
但遗憾的是未能生成它自己的数据,因为生成器spec/cat
只生成当然不符合vector?
谓词的列表:
总结一下:如何编写一个既能接受又能生成向量的规范[hi "there"]
[my "dear" :friend]
?
也可以将问题改写为“是否有替代方法spec/cat
可以生成向量而不是列表?” 或“是否可以将 :kind 参数传递给spec/cat
?” 或“我可以将生成器附加到规范中,该规范获取原始生成器的输出并将其转换为向量吗?”。