Давайте определим дерево T:
A
/ \
B C
/ \
D E
Скажем, новый узел добавлен к E, что дает T ':
A
/ \
B C
/ \
D E
\
G
В изменяемом языке это это простая задача - просто обновите дочерние элементы E, и все готово. Однако в неизменяемом мире необходимо сначала узнать путь к E, затем получить E 'из E + новый дочерний элемент, затем получить B' и, наконец, A '(= T').
Это громоздко; в идеале была бы какая-то функция, которая принимала бы значения E и G (и, возможно, T) и производила бы T ', не указывая путь к E.
Я вижу два возможных способа решения этой проблемы:
Это то, что я желание даже возможно с разумной производительностью? Большое спасибо за любой вклад!