(take 5 daniel-spiewak)
Reference: (take 5 daniel-spiewak)
... a "pluggable" type system is really not very useful unless you can compose multiple type systems into a coherant whole, and this is where problems arise. Anyone who has studied type theory in a formal context and run a few soundness proofs will understand that seemly innocuous and self-contained type rules will almost always interact in surprising ways.
This is certainly true if you are enforcing a strict type discipline on your language and rejecting programs that do not comply with this discipline, as type systems do. But it has yet to be shown that useful static analysis parts cannot be composed. They merely provide information, so they may be able to work orthogonally.
By and large though, I think that most of the awesome bullet-points that Clojure hits have already been stolen whole-sale by Scala. :-) A few examples: vector, map/set, agents (in Akka), STM (in Scala STM), SLIME (see ENSIME), etc. The Scala community is very actively watching the Clojure community. Y'all are a very fertile source of inspiration!