我在写一个解析XML的clojure程序。作为其中的一部分,我希望基于clojure.xml/parse函数在XML文档中创建一个节点树。不过,我希望树是双向的 - 也就是说,每个节点都有一个子列表和一个指向其父节点的指针。只有一个问题:所有数据都是不可变的,所以我不能在不更改子级的情况下“添加”指向父级的指针,从而使父级指针无用。clojure中的指针循环
我找到了这样的回答:How can one create cyclic (and immutable) data structures in Clojure without extra indirection?
的解决方案建议似乎要创建一个单独的索引图,这是指内部的对象。对于更糟糕的解决方案来说,这似乎是一项巨大的工作量。我没有问题,因为树在施工过程中是可变的,但我无法弄清楚它是如何完成的。真的没有办法在clojure中获得循环指针吗?
谢谢!
在纯FP设置中处理XML的正确方法是使用拉链。 http://clojuredocs.org/clojure_core/clojure.zip/xml-zip – 2012-02-14 12:16:53