Clojure 如何使用spec定义大小相等的集合序列?(可能吗?)
我希望表示字符串集合的序列。内部集合应具有相同的长度 我最初的尝试是这样的Clojure 如何使用spec定义大小相等的集合序列?(可能吗?),clojure,clojure.spec,Clojure,Clojure.spec,我希望表示字符串集合的序列。内部集合应具有相同的长度 我最初的尝试是这样的 (s/def ::stuff (s/every (s/coll-of string?) :min-count 1)) 但当我练习这个时,我会得到不同长度的内部集合 是否有一种声明性的方式来指定所有长度都应该相同?或者这只能在规范的自定义生成器函数中指定吗?我会将规范声明为 (s/def ::stuff (s/and (s/every (s/coll-of string?)) #(or (emp
(s/def ::stuff (s/every (s/coll-of string?) :min-count 1))
但当我练习这个时,我会得到不同长度的内部集合
是否有一种声明性的方式来指定所有长度都应该相同?或者这只能在规范的自定义生成器函数中指定吗?我会将规范声明为
(s/def ::stuff
(s/and
(s/every (s/coll-of string?))
#(or (empty? %)
(apply = (map count %)))))
这很可能是gen,但您将得到的大部分内容要么是空集合,要么是一个元素的集合,这两个元素都会通过长度约束。为此,您需要一个定制的gen