Given a spec and a value, returns :clojure.spec.alpha/invalid if value does not match spec, else the (possibly destructured) value.