Clojure seems to have double downed on dynamism and runtime construct, away from static types. It seems to have made the bet that better software (less defects, cheaper to maintain and extend, more targeted to the users needs) is better achieved through:
* Simpler primitives * Immutability * Interactive development * Higher level constructs * Data driven DSLs * Generative testing * Contract specifications * Data specifications
Which are all very good ideas, but they're non traditional compared to formal static type systems and proofs.
They're used to be more drive behind these in the past, Common Lisp and Eiffel embody a lot of these ideas, but miss on others. So Clojure is like a new take trying to fit in all these ideas of interactive, dynamic, safe languages together a new.
And I just find it interesting, because it is counter current. As others have pivoted back to static types, Clojure went all in on dynamism.
Time will be the true test, and I'm looking forward from the learnings in all directions.