That language and compiler distinction is important. For instance, I generally approach developing in Clojure like developing in a dynamic language. I mean, if I want types then I can just use core.typed, right?<p>Things were going great until I used a validation library with HTML form input to check some numeric ranges. Boom: cannot convert java.lang.String to java.lang.Integer. Would the same thing happen in clojurescript? If it obeys js semantics then I won&#x27;t get an exception, but &quot;200&quot; will become 200 and things will work as expected.<p>If you have a language defined by a test suite that exists separately from your compilers, then perhaps you can avoid these kinds of problems.