TL;DR
s/conformもデータが Spec を満たすかを確かめるが、成功したときは値そのものを返す。- 失敗したときは、プログラムを中断せずに
:clojure.spec.alpha/invalidを返す。
内容
valid? 関数とは別に、conform という関数もある。この関数もデータが Spec を満たしているかを確かめるが、成功したときは値そのものを返し、失敗したときは invalid を返す点が違う。invalid はデータの検証に使われる値で、プログラムを中断せず、データが無効であることだけを知らせる。
(s/conform number? 42) ; 42
(s/conform number? "42") ; :clojure.spec.alpha/invalid
(s/conform number-or-string? :56) ; :clojure.spec.alpha/invalid