我在寫一個解析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