;; default impl is the identity
(datafy {:message "Hello"})
=>
{:message "Hello"}
;; exceptions default datafy impl is `Throwable->map`
(datafy (ex-info "An Exception" {:msg "something went wrong"}))
{:cause "An Exception",
:data {:msg "something went wrong"}
:via
[{:type clojure.lang.ExceptionInfo,
:message "An Exception",
:data {:msg "something went wrong"},
:at [user$eval16337 invokeStatic "form-init3462716552974711523.clj" 120]}],
:trace
[[user$eval16337 invokeStatic "form-init3462716552974711523.clj" 120]
[user$eval16337 invoke "form-init3462716552974711523.clj" 120]
[clojure.lang.Compiler eval "Compiler.java" 7181]
,,,
[clojure.lang.AFn run "AFn.java" 22]
[java.lang.Thread run "Thread.java" 833]]}