I'm in the process of learning Clojure and I can't understand some language design decisions: Why does a language with immutable Strings like Clojure also needs Keywords and Symbols data types? Couldn't strings just have optional namespaces and metadata and all this stuff? For immutable strings comparison could just as well be identity base, no?
Or, since interop with Java is a must have for Clojure, at least have the Java String type and a KeywordSymbol data type.
I find this String/Keyword/Symbol "trichotomy" especially weird since Clojure seems very focused on "purity" and keeping things simple in other aspects.