2

set、 、equalsなどの特定の配列操作はconcat、メモリ上に構造体を完全にコピーする必要がある場合、かなり遅くなります (ほとんどの場合 O(n))。Clojure などの不変言語では、これらの操作が非常に複雑になるのを避けるためにいくつかのトリックが使用されていることは承知しています。それらのトリックは何ですか?

4

1 に答える 1

1

永続的なデータ構造が保証されているため、Clojure では「構造共有」が使用されています。これは、たとえば、cons/conj を使用してリスト/ベクターに追加する場合、古いデータ構造が古いデータ構造と新しいデータ構造の両方で共有されることを意味します。

舞台裏では、データは分岐係数の高い浅いツリーに格納されます。

このビデオでは、Rich Hickey 自身が基本的な構造とその最適化について説明しています。

于 2013-10-03T22:56:55.930 に答える