Я знаю, как работают обычные изменчивые карты (используя хеш-таблицы), и я знаю, как работают неизменные списки (рекурсивные связанные списки) и их преимущество перед изменяемыми списками (постоянное добавление времени без испорчения оригинала), но как делают неизменяемые карты (например, Scala)?
Я знаю преимущество не возиться с исходной картой при создании новых карт, но как работает базовая структура данных и какие характеристики производительности они имеют, например, по сравнению с изменяемыми хеш-таблицами? Есть ли какая-либо стандартная структура данных, которую люди используют для их реализации, чтобы я мог искать в CLRS/wikipedia?