27

Scala のすべての不変データ構造は永続的ですか? そうでない場合、どれがそうでどれがそうでないのですか? しつこい人の行動特性は?また、Clojure の永続的なデータ構造と比べてどうですか?

4

4 に答える 4

60

古い値が「更新」操作によって維持されるという意味で、Scala の不変データ構造はすべて永続的です。実際、私は不変と永続の違いを知りません。私にとって、2 つの用語は別名です。

Scala の 2.8 不変データ構造の 2 つは、32 項ツリーとして表されるベクトルとハッシュ試行です。これらは、もともと EPFL で私のチームと協力していた Phil Bagwell によって設計され、その後 Clojure に採用され、最終的に Scala 2.8 に採用されました。Scala の実装は、Clojure の実装と共通のルートを共有していますが、それを移植したものではありません。

于 2010-06-24T08:43:18.213 に答える
9

Daniel Spiewak による優れた記事をご覧ください:
http://www.codecommit.com/blog/scala/implementing-persistent-vectors-in-scala
http://www.codecommit.com/blog/scala/more -persistent-vectors-performance-analysis

彼は Clojure の実装についても言及しています。

于 2010-06-24T05:17:25.237 に答える
6

List、Vector、HashMap、および HashSet はすべて Scala 2.8 で永続的です。他にも永続的なデータ構造がありますが、これらはすべての主要な用途をカバーしているため、それらすべてを列挙する意味があるかどうかはわかりません。

于 2010-06-24T15:15:52.230 に答える
4

あなたの質問の最後の部分で、Clojureのデータ構造がScalaに移植されたとプレゼンテーションでRichHickeyが言及したことを覚えています。また、Michael Fogusは、このインタビューでScala2.8がClojureのデータ構造の一部を採用する計画について言及しています。

申し訳ありませんが、これは詳細が非常に短いです...上記のScala 2.8プランのステータスはわかりませんが、RichとMichaelがこれについて言及したことを思い出し、グーグルで検索するのは面白いかもしれないと思いました。 '興味があります。

于 2010-06-24T04:28:15.707 に答える