anchor.diff:  (s/conform ::seq-of-keywords [:a :b :c])
   ;;=> [:a :b :c]
   (s/explain ::seq-of-keywords [10 20])
  -;; In: [0] val: 10 fails spec: :spec.examples.guide/seq-of-keywords predicate: keyword?
  +;; 10 - failed: keyword? in: [0] spec: :user/seq-of-keywords
   
   (s/def ::odds-then-maybe-even (s/cat :odds (s/+ odd?)
                                        :even (s/? even?)))
  
positive.code: 
  (s/explain :unq/person
             (->Person "Elon" nil nil nil))
  ;; In: [:last-name] val: nil fails spec: :my.domain/last-name at: [:last-name] predicate: string?
  ;; In: [:email] val: nil fails spec: :my.domain/email-type at: [:email] predicate: string?
  
  (s/conform :unq/person
    (->Person "Elon" "Musk" "elon@example.com" nil))
  
negative.code: 
  (s/check-asserts true)
  (person-name 100)
  ;; Execution error - invalid arguments to my.domain/person-name at (REPL:3).
  ;; 100 - failed: map?
  ----
  
  A deeper level of integration is to call conform and use the return value to destructure the input. This will be particularly useful for complex inputs with alternate options.
  