Постоянные структуры данных в Scala
Являются ли все неизменяемые структуры данных в Scala постоянными? Если нет, то какие из них существуют, а какие нет? Каковы поведенческие характеристики тех, кто упорен? Кроме того, как они сравниваются с постоянными структурами данных в Clojure?
4 ответа:
Неизменяемые структуры данных Scala являются постоянными в том смысле, что старое значение поддерживается операцией "update". На самом деле я не знаю разницы между неизменяемым и постоянным; для меня эти два термина-псевдонимы.
Две неизменяемые структуры данных Scala 2.8-это векторы и хэш-попытки, представленные в виде 32-арных деревьев. Они были первоначально разработаны Филом Бэгвеллом, который работал с моей командой в EPFL, затем приняты для Clojure, а теперь, наконец, приняты для Scala 2.8. Реализация Scala имеет общий корень с реализацией Clojure, но, безусловно, не является ее портом.
Пожалуйста, взгляните на эти превосходные статьи Даниэля Spiewak:
http://www.codecommit.com/blog/scala/implementing-persistent-vectors-in-scala
http://www.codecommit.com/blog/scala/more-persistent-vectors-performance-analysisОн также имеет в виду реализацию Clojure.
List, Vector, HashMap и HashSet являются постоянными в Scala 2.8. Есть и другие постоянные структуры данных, но они охватывают все основные виды использования, и я не уверен, что есть смысл перечислять их все.
Что касается последней части вашего вопроса, я помню, как Рич Хики упомянул в презентации, что структуры данных Clojure были перенесены в Scala. Кроме того, Майкл Фогус упоминает о планах Scala 2.8 принять некоторые из структур данных Clojure в этом интервью .
Извините, что так мало деталей... Я не уверен, каков статус вышеупомянутых планов Scala 2.8, но я вспомнил, что Рич и Майкл упоминали об этом, и подумал, что это может быть интересно для вас в google, Если вам интересно.