Estoy escribiendo un programa clojure que analiza XML. Como parte de esto, deseo crear un árbol de nodos en el documento XML, basado en la función clojure.xml/parse. Sin embargo, me gustaría que el árbol sea bidireccional, es decir, cada nodo tiene una lista de elementos secundarios y un puntero a su elemento principal. Solo hay un problema: todos los datos son inmutables, por lo que no puedo 'agregar' un puntero al padre sin cambiar el niño, lo que hace que el puntero del padre sea inútil.Ciclos de puntero en clojure
He encontrado esta respuesta: How can one create cyclic (and immutable) data structures in Clojure without extra indirection?
La solución propuesta no parece ser la creación de un mapa índice separado, que se refiere a los objetos en el interior. Esto parece una gran cantidad de trabajo para una solución mucho peor. No tengo ningún problema para que el árbol sea mutable durante la construcción, sin embargo, no puedo entender cómo se puede hacer. ¿Realmente no hay forma de obtener un puntero cíclico en clojure?
Gracias!
La forma correcta de manejar XML en una configuración de FP pura es usar cremalleras. http://clojuredocs.org/clojure_core/clojure.zip/xml-zip –