Abh*_*kar 25 scala clojure persistent data-structures
Scala中的所有不可变数据结构都是持久的吗?如果不是,哪一个是哪个,哪个不是?那些持久的行为特征是什么?另外,它们如何与Clojure中的持久数据结构进行比较?
Mar*_*sky 55
Scala的不可变数据结构都是持久的,因为旧值是由"更新"操作维护的.事实上,我不知道不可变和持久之间的区别; 对我来说,这两个术语是别名.
Scala的2.8个不可变数据结构中的两个是向量和散列尝试,表示为32个树.这些最初由Phil Bagwell设计,他与我的团队一起在EPFL工作,然后被Clojure采用,现在最终被Scala 2.8采用.Scala实现与Clojure实现共享一个公共根,但肯定不是它的端口.
请查看Daniel Spiewak撰写的这些优秀文章:
http://www.codecommit.com/blog/scala/implementing-persistent-vectors-in-scala
http://www.codecommit.com/blog/scala/more -persistent向量性能分析
他也指的是Clojure的实现.
List,Vector,HashMap和HashSet在Scala 2.8上都是持久的.还有其他持久性数据结构,但这些结构涵盖了所有主要用途,我不确定列举所有这些结构是否有任何意义.