Как мне создать спецификацию, которая принимает только последовательные (т.е. сохраняющие порядок) коллекции?
Например
cljs.user=> (s/def ::path (s/+ number?))
:cljs.user/path
cljs.user=> (s/explain ::path [])
val: () fails spec: :cljs.user/path predicate: number?, Insufficient input
:cljs.spec.alpha/spec :cljs.user/path
:cljs.spec.alpha/value []
cljs.user=> (s/explain ::path [1 2 3])
Success!
Это, как и ожидалось, но в то же время, обратите вниманиев порядке
cljs.user=> #{1 2 3}
#{1 3 2}
cljs.user=> (s/explain ::path #{1 2 3})
Success!
И это не имеет никакого смысла.Итак, вторичный вопрос:
Почему относящиеся к последовательности выражения (cat, *, +,?) В спецификации допускают коллекции, нарушающие последовательность?
UPD Я перепутал последовательное / упорядоченное различие вОригинальный вопрос.Уточненная терминология.