Tôi đã nhận thấy trong khi đang tìm kiếm chương trình chức năng có trường hợp danh sách tham số bắt đầu trở nên quá mức khi sử dụng cấu trúc dữ liệu không thay đổi được lồng nhau. Điều này là do khi thực hiện cập nhật cho một trạng thái đối tượng, bạn cần cập nhật tất cả các nút cha trong cấu trúc dữ liệu. Lưu ý rằng ở đây tôi lấy "cập nhật" để có nghĩa là "trả về một đối tượng bất biến mới với thay đổi thích hợp".Quản lý cập nhật đối với cấu trúc dữ liệu không thay đổi trong các ngôn ngữ chức năng
ví dụ: các loại chức năng tôi đã tìm thấy bản thân mình bằng văn bản (Clojure chẳng hạn) là:
(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)))))
Tất cả điều này để cập nhật một tài sản đơn giản là khá xấu xí, nhưng ngoài người gọi có để lắp ráp tất cả các thông số! Điều này phải là một yêu cầu khá phổ biến khi giao dịch với cấu trúc dữ liệu bất biến trong các ngôn ngữ chức năng nói chung, vì vậy có một mô hình hay thủ thuật tốt để tránh điều này mà tôi nên sử dụng thay thế không? Không.
Bạn có thể làm phẳng dữ liệu của mình: lưu trữ các thế giới, quốc gia, thành phố, v.v. Sau đó, nếu bạn phải cập nhật, hãy cập nhật nó trong cấu trúc phẳng. Liên kết dữ liệu với nhau qua các khóa để bạn có thể kết hợp lại với nhau sau này khi cần. Chúng tôi đang loại phát minh lại cơ sở dữ liệu quan hệ tại thời điểm này mặc dù. –