I am trying to learn spec, and have come across the following behaviour.
My code:
(s/def ::foo (s/cat :first symbol?
:rest (s/alt :simple vector?
:multi (s/cat :parts (s/* symbol?) :final vector?))))
(s/explain ::foo '(foo [blah] x))
(s/conform ::foo '(foo [blah] x))
What I find is that s/explain prints "Success!" while s/conform returns :s/invalid.
Have I stumbled on a bug, or have I not understood the functions?
Or is my spec invalid in the first place?
(I am using Clojure 1.11.1 & spec 0.3.218)