Я заметил, что в то время, когда я старался опереться на функциональное программирование, есть случаи, когда списки параметров начинают становиться чрезмерными при использовании вложенных неизменяемых структур данных. Это связано с тем, что при обновлении состояния объекта вам необходимо обновить все родительские узлы в структуре данных. Обратите внимание, что здесь я беру "обновление" для обозначения "вернуть новый неизменяемый объект с соответствующим изменением".
например. тип функции, которую я нашел (Clojure пример):
(defn update-object-in-world [world country city building object property value]
(update-country-in-world world
(update-city-in-country country
(update-building-in-city building
(update-object-in-building object property value)))))
Все это для обновления одного простого свойства довольно уродливо, но, кроме того, вызывающий должен собрать все параметры!
Это должно быть довольно распространенным требованием при работе с неизменяемыми структурами данных на функциональных языках в целом, так что есть хороший шаблон или трюк, чтобы избежать этого, что я должен использовать вместо этого?