Fork me on GitHub

After #238, there will be two ways to program with schemas: via schema keys (`:in` in explain) and value keys (`:path`in explain). e.g. one can walk easily over parts of schemas that don’t effect the value paths:

(def Schema
       [:id string?]
       [:tags [:set keyword?]]
          [:street {:optional true} string?]
          [:lonlat {:optional true} [:tuple double? double?]]]
         [:fn '(fn [{:keys [street lonlat]}] (or street lonlat))]]]]
      [:fn '(fn [{:keys [id tags]}] (and id tags))]]]))

(mu/get-in Schema [0 0 :address 0 :lonlat])
; => [:tuple double? double?]

(mu/get-in* Schema [:address :lonlat])
; => [:tuple double? double?]