На Splay Trees странице Википедии сказано (в преимуществах раздел):
Возможность создания версии постоянной структуры данных расширенных деревьев, которая обеспечивает доступ как к предыдущей, так и к новой версии после обновления. Это может быть полезно в функциональном программировании и требует амортизированного пространства O(log n) для каждого обновления.
Это почему? Как функциональное программирование использует постоянные Splay-деревья?