変更点がリストアップされている。プログラムのパフォーマンスを向上させてくれそうな大きな機能もいくつかある。構築のパフォーマンスを大幅に改善する。(immutable)である,ということだ。挿入や削除などの変更を行うためには,データ構造のコピーを新たに生成しなければならない。トリックがひとつある。永続データ構造は内部構成やすべての項目が不変であるため,データについてはすべて,データ構造も大部分が共有可能なのだ。そのために,コピー生成のオーバーヘッドはきわめて小さなものになる。コピーのオーバーヘッドが小さいとはいっても,場合によってはデータ構造体に数多くの要素を挿入しなければならないこともあり得る。トランジェントはそのような場合へのソリューションである。簡単に言うとこれは,修正作業を行う前に永続的なデータ構造を一時的(Transient)なものに転換する,というアイディアだ。関数がこの処理を行う。一時的なものになったデータ構造体は,永続的であったときと同じアクセス関数をサポートする。付けた別の関数を用いる必要がある。関係が参考になるだろう。前者が不変であり,変更が新しいコピーの生成をともなうのに対して,後者はデータを直接修正することができる。オペレーションである。この操作により新たな一時的オブジェクトが生成され,データ構造体の新しいルートオブジェクトと,一時的(Transient)であることをマークするフラグが保持される。データコピーは発生しない。オペレーションが実行される。一時的データ構造にはもうひとつ,単一のスレッドからしか利用できない,という重大な制約があるからだ。その理由は単純である。一時的データは変更可能なので,異なったスレッドからの操作は危険であり,同期処理が必要になるためだ。ここで永続的データ構造を使用すれば,スレッド間のデータ共用はシンプルなものになる。一時的データにすることで,ひとつのスレッドからデータの直接修正が可能になる。それを永続的データ構造に戻すことによって,再び他のスレッドからもアクセス可能になる,ということだ。スライドを参照して頂きたい。シーケンスによって発生するオーバーヘッドの削除にある。全般にわたって使用されている。場合によっては処理がほとんど実行されないこともある。次のコードはその例だ。関数は指定された間隔のすべての数値を発生させるような遅延シーケンスを生成する。