Стойкие структуры данных в Scala

Являются ли все неизменные структуры данных в Scala постоянными? Если нет, то какие из них, а какие нет? Каковы поведенческие характеристики тех, которые являются постоянными? Кроме того, как они сравниваются с постоянными структурами данных в Clojure?

Ответ 1

Scala неизменяемые структуры данных являются постоянными, в том смысле, что старое значение поддерживается операцией "update". На самом деле, я не знаю разницы между неизменными и стойкими; для меня два термина - псевдонимы.

Две из Scala 2.8 неизменяемых структур данных - это векторы и хэш-попытки, представленные как 32-арные деревья. Они были первоначально разработаны Филом Багвелл, который работал с моей командой в EPFL, затем был принят для Clojure и теперь, наконец, принят для Scala 2.8. Реализация Scala разделяет общий корень с реализацией Clojure, но, конечно, не является его портом.

Ответ 3

Список, вектор, HashMap и HashSet сохраняются на Scala 2.8. Существуют и другие постоянные структуры данных, но они охватывают все основные виды использования, я не уверен, что есть какие-то моменты для перечисления их всех.

Ответ 4

В последней части вашего вопроса я помню, как Rich Hickey упоминал в презентации, что структуры данных Clojure перенесены на Scala. Кроме того, Майкл Фогус упоминает о планах Scala 2.8 принять некоторые из структур данных Clojure в это интервью.

Извините, это так мало деталей... Я не уверен, что такое статус на вышеупомянутых планах Scala 2.8, но я вспомнил, что Рич и Майкл упоминали об этом и подумали, что это может быть интересно для вас для google, если вы заинтересованы.