refのドキュメントには:max-historyオプションが示され、「refは読み取り要求を処理するために必要に応じて動的に履歴を蓄積する」と記載されています。REPLには履歴があることがわかりますが、refの以前の値を見つける方法はわかりません。
user=> (def the-world (ref "hello" :min-history 10))
#'user/the-world
user=> (do
(dosync (ref-set the-world "better"))
@the-world)
"better"
user=> (let [exclamator (fn [x] (str x "!"))]
(dosync
(alter the-world exclamator)
(alter the-world exclamator)
(alter the-world exclamator))
@the-world)
"better!!!"
user=> (ref-history-count the-world)
2
おそらくthe-worldの値は「hello」、「better」、「better !!!」です。その履歴にアクセスするにはどうすればよいですか?
その履歴にアクセスできない場合、後で照会できる値の履歴を保持するデータ型はありますか?それとも、なぜデータベースが作成されたのですか?