EDIT: One interesting observation (from the outsider&#x27;s perspective) - As I see, Clojure encourages use of primitive&#x2F;language-provided data structures such as maps, lists, etc.. instead of creating your own abstractions and &quot;inventing languages&quot; (this is mentioned in a negative context, in Clojure docs). This is radically different approach compared to e.g. SICP, where creating many mini languages is actually encouraged. I personally find Clojure  approach messy and unstructured (Also browsing a code in the wild).
Anyway, as I can tell, Clojure has enough support to create well structured abstractions.