Me he dado cuenta en mi búsqueda de la programación funcional de que hay casos en que las listas de parámetros comienzan a ser excesivas cuando se usan estructuras de datos inmutables anidadas. Esto se debe a que al realizar una actualización de un estado de objeto, también debe actualizar todos los nodos principales en la estructura de datos. Tenga en cuenta que aquí tomo "actualización" para significar "devolver un nuevo objeto inmutable con el cambio apropiado".Administración de actualizaciones para estructuras de datos inmutables anidadas en lenguajes funcionales
p. Ej. el tipo de función que he encontrado a mí mismo escribiendo (Clojure ejemplo) es:
(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)))))
Todo esto para actualizar una propiedad simple es bastante feo, pero además de la persona que llama tiene que reunir todos los parámetros!
Esto debe ser un requisito bastante común cuando se trata de estructuras de datos inmutables en lenguajes funcionales en general, entonces ¿hay un buen patrón o truco para evitar esto que debería estar usando en su lugar?
Puede aplanar sus datos: almacene los mundos, países, ciudades, etc., por separado. Luego, si tiene que actualizar uno, actualícelo en la estructura plana. Vincular los datos a través de las claves para que pueda armarlos más tarde cuando lo necesite. Sin embargo, en este momento estamos reinventando las bases de datos relacionales. –