;; Asociamos a un usuario un repositorio (assoc user :repository mi-db-writer) ;; luego en otro modulo (defn expire [user] (write (:repository user) (assoc user :status :expired))) ;; Tambien se puede aƱadir a los metadatos del usuario ;; si no se quiere mezclar con los datos de negocio ;; Lo importante es que dos elementos que solo difieren ;; en los metadatos son *iguales* (def yo-con-repo ^{:repository my-repo} {:name "jneira" :type "user"}) (def yo {:name "jneira" :type "user"}) (assert (= yo yo-con-repo)) ;; expire quedaria asi (defn expire [user] (write (:repository (meta user)) (assoc user :status :expired)))