Я изучаю Clojure и не могу понять некоторые решения по проектированию языка :Почему язык с неизменяемыми строками, такой как Clojure, также нуждается в типах данных Keywords и Symbols? Разве строки не могут иметь необязательные пространства имен, метаданные и все такое прочее? Для неизменяемых строк сравнение может также быть базой идентичности, не так ли?
Или, поскольку взаимодействие с Java является обязательным для Clojure, по крайней мере, иметь тип Java String и тип данных KeywordSymbol.
Я нахожу эту «трихотомию» строк/ключевых слов/символов особенно странной, поскольку Clojure кажется очень сосредоточенным на «чистоте» и упрощении других аспектов.