A documentação para ref mostra uma opção: max-history e afirma que "refs acumulam histórico dinamicamente conforme necessário para lidar com demandas de leitura". Eu posso ver que há histórico no REPL, mas não vejo como encontrar valores anteriores de uma 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
Presumivelmente, o mundo teve os valores "olá", "melhor" e "melhor !!!". Como faço para acessar esse histórico?
Se não for possível acessar esse histórico, existe um tipo de dados que mantém um histórico de seus valores que podem ser consultados posteriormente? Ou é por isso que o banco de dados datômico foi criado?