5

を介してデータのネストされたマップをディスクに保存していspitます。slurpマップ内の一部のマップを並べ替えて、マップをプログラムに戻したときに並べ替えを維持したいと考えています。ソートされたマップには固有のリテラル表現がないためspit、map-of-maps をディスクに書き込むと、ソートされたマップとソートされていないマップは同じように表現され#(read-string (slurp %))、データを ing すると、すべてのマップが通常のソートされていないタイプになります。問題を説明するおもちゃの例を次に示します。

(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}

マップを読み取った後にソートされたマップに変換するのではなく、最初にソートされた状態でマップを読み取る方法はありますか? それとも、これはある種の実際のデータベースを使用する必要があるという兆候ですか?

4

2 に答える 2