Olá. Tudo bem? Fiz o código que o professor passou na ala mas por algum motivo está me retornando esse erro. Já refiz várias vezes o código e o erro sempre retorna. Já olhei no github da aula também mas a mesma coisa acontece. Alguém consegue me dar um help?
O erro é esse:
Syntax error (ClassCastException) compiling at (C:\Users\Leticia\Documents\clojure-estudos\curso\src\hospitalNovo\aula3.clj:36:1).
class hospitalNovo.aula3$carrega_se_nao_existe cannot be cast to class clojure.lang.IAtom (hospitalNovo.aula3$carrega_se_nao_existe is in unnamed module of loader clojure.lang.DynamicClassLoader @1d96d872; clojure.lang.IAtom is in unnamed module of loader 'app')
Full report at:
C:\Users\Leticia\AppData\Local\Temp\clojure-16250126248415735880.edn
O código é esse
(defn carrega-paciente [id]
(println "Carregando" id)
(Thread/sleep 1000)
{:id id, :carregado-em (h.logic/agora)})
;(pprint (carrega-paciente 15))
;(pprint (carrega-paciente 30))
(defn carrega-se-nao-existe
[cache id carregadora]
(if (contains? cache id)
cache
(let [paciente (carregadora id)]
(assoc cache id paciente))))
(pprint (carrega-se-nao-existe {} 15, carrega-paciente))
(pprint (carrega-se-nao-existe {15 {:id 15}}, 15, carrega-paciente))
(defprotocol Carregavel
(carrega! [this id]))
(defrecord Cache
[cache carregadora]
Carregavel (carrega! [this id]
(swap! carrega-se-nao-existe cache id carregadora) ;atualiza o cache
(get @cache id)));cache atualizado
(def pacientes (->Cache (atom {}), carrega-paciente))
(pprint pacientes)
(carrega! pacientes 15)
(pprint pacientes)