永続データ構造
全バージョンにアクセス可能で、最新版だけを変更可能なデータ構造を半永続的(partially persistent)という。全バージョンにアクセスも更新も可能なデータ構造を全永続的(fully persistent)という。最新版以外の2つのバージョンから新たなバージョンを作成/マージする操作があるなら、そのデータ構造を融合永続的(confluently persistent)という。永続的でないデータ構造は短命(ephemeral)であるという。
このようなデータ構造の分類は、特に論理プログラミングや関数型プログラミングで典型的である。純粋関数プログラムでは全てのデータがイミュータブルであり、全てのデータ構造が自動的に全永続的である。永続データ構造はデータをその場で更新する方法でも構築可能であり、一般に純粋関数での実装よりも記憶領域や時間を必要としない。
永続性は単に変更のたびにデータ全体をコピーすることでも達成できるが、多くの操作はデータ構造のほんの一部しか変更しないので、時間と領域の効率が悪い。