Tôi đang viết chương trình clojure phân tích cú pháp XML. Là một phần của điều này, tôi muốn tạo một cây của các nút trong tài liệu XML, dựa trên hàm clojure.xml/parse. Tuy nhiên, tôi muốn cây là bi-directional - nghĩa là, mỗi nút có một danh sách các con, và một con trỏ đến cha của nó. Chỉ có một vấn đề: tất cả dữ liệu là không thay đổi, và vì vậy tôi không thể 'thêm' một con trỏ vào cha mẹ mà không thay đổi con, do đó làm cho con trỏ của phụ huynh vô dụng.Chu kỳ con trỏ trong clojure
tôi đã tìm thấy câu trả lời này: How can one create cyclic (and immutable) data structures in Clojure without extra indirection?
Các giải pháp đề nghị dường như được tạo ra một bản đồ chỉ số riêng biệt, trong đó đề cập tới các đối tượng bên trong. Điều này có vẻ như một lượng lớn công việc cho một giải pháp tồi tệ hơn nhiều. Tôi không có vấn đề gì về cây để có thể thay đổi được trong quá trình xây dựng, tuy nhiên tôi không thể tìm ra cách nó có thể được thực hiện như thế nào. Có thực sự không có cách nào để có được một con trỏ tuần hoàn trong clojure?
Cảm ơn!
Cách thích hợp để xử lý XML trong cài đặt FP thuần túy là sử dụng khóa kéo. http://clojuredocs.org/clojure_core/clojure.zip/xml-zip –