| I feel Spec is a part of that "move away from types" which I was talking about. It's an approach to software documentation, specification and verification that is at the other end of the spectrum from types. 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. |
An always-on static type system could not develop this way.