Fork me on GitHub

I’ve been lately thinking whether malli should adopt git’s porcelain vs plumbing mentality for the schemas, but haven’t drafted anything sensible yet about it. To me there seems to be a lot of cases where the more complex/abstract schema really is just a composition of simpler ones, eg. range is just int with min and max and stepping validation (`[:range {:from 0 :to 10 :step 2}) => [:and [:int {:min 0 :max 10}] [:fn '(fn [i] (= 0 (mod i 2))]]`) or [:map-of keyword? string?] could be [:map {:default-kv [keyword? string?]}] &lt;- this one doesn’t exist! just an example) etc. but this would require quite a bit of thought on choosing what the base schemas in registries are and what counts as plumbing and what doesn’t… 🙂


Vega/Vega Lite does something similar. Vega Lite is high-level data format (for plotting), and compiles down to Vega.