我正在通过 . 将嵌套的数据映射保存到磁盘spit
。我希望对我的地图中的一些地图进行排序,并在我slurp
将地图重新放入我的程序时保持排序。排序的映射没有唯一的文字表示,所以当我spit
将映射映射到磁盘上时,排序的映射和未排序的映射表示相同,并且#(read-string (slurp %))
数据使每个映射成为通常的未排序类型。这是一个说明问题的玩具示例:
(def sorted-thing (sorted-map :c 3 :e 5 :a 1))
;= #'user/sorted-thing
(spit "disk" sorted-thing)
;= nil
(def read-thing (read-string (slurp "disk")))
;= #'user/read-thing
(assoc sorted-thing :b 2)
;= {:a 1, :b 2, :c 3, :e 5}
(assoc read-thing :b 2)
;= {:b 2, :a 1, :c 3, :e 5}
是否有某种方法可以首先按排序读取地图,而不是在阅读后将它们转换为排序地图?或者这是否表明我应该使用某种真实的数据库?