我正在学习Clojure,但无法理解某些语言设计决策:既然Clojure使用不可变字符串,为什么还需要关键字和符号数据类型?字符串不能只有可选的命名空间和元数据等吗?对于不可变字符串,比较也可以基于标识进行,对吗?
另外,由于与Java的互操作性对于Clojure来说是必须的,因此至少应该有Java String类型和一个KeywordSymbol数据类型。
我发现Clojure中String/Keyword/Symbol的“三分法”特别奇怪,因为Clojure在其他方面似乎非常注重“纯洁性”和简单性。