nil-punning is idiomatic in Clojure – it’s a feature, not a bug 
I think that people who are inclined toward Haskell are going to inherently believe Haskell and a strict static type system are “better” for large-scale development but I’m not convinced (after close to forty years of experience – spanning static and dynamic languages, including FP languages that predate Haskell).
Every bug in production got past your type system and your tests. As a study into bug fix commits in public GitHub repos said “Clojure, Haskell, Ruby and Scala all have significant negative coefficients implying that these languages are less likely than average to result in defect fixing commits.” – so there’s two dynamically-typed languages and two statically-typed languages – doing much better than many mainstream languages.