I think the difference here is that static typing gives a poverty of real reliability guarantee's but one must always pay the cost. Since Clojure gives agency back to the programmer, there is a choice here. Clojure for production should check its types at the domain level or as close as possible, be simple, and spare. Personal experiments and tooling can be in a different style. It is just like building anything else, design and construction for maintainability is very different than prototyping or experimenting. Clojure has all the tools required to make robust production software. But it takes the intention and proper decision making to do so.