As far as his example goes, this IS how you model data:
(def people [{:name "Elsie"
:admin? true
:mod? true}
{:name "Lin Shiwen"
:nickname "Rocky"
:mod? true}])
Notice the lack of a "fill-in" static ADT form. No types here -- no static types NOR no ":type" field. Instead, we say what we know about our data items and we omit what we don't know. Just the facts, ma'am. And then Clojure gives us the obscenely simple tools to deal.It will forever confound me why some developers/PLs wish to model data in static, inflexible, a priori structures -- given the overtly clear development efficiency and simplicity of NOT doing so (and not HAVING to do so.)