Я следую clojure.spec guide (http://clojure.org/guides/spec). Меня смущает разница между alt
и or
для спецификации последовательности.
Для меня два следующих примера работают одинаково хорошо. Итак, какая разница между этими двумя?
; Use `alt`
(s/def ::config (s/* (s/cat :prop string?
:val (s/alt :s string? :b boolean?))))
(s/explain ::config ["-server" "foo" "-verbose" true "-user" 13])
; Use `or`
(s/def ::config (s/* (s/cat :prop string?
:val (s/or :s string? :b boolean?))))
(s/explain ::config ["-server" "foo" "-verbose" true "-user" 13])