Cómo usar dos! en Clojure – Resuelto

La función dos! en Clojure se utiliza para modificar los valores de los atoms de manera segura y atómica dentro de un bloque transaccional. Al igual que dosync para refs, dos! garantiza que los cambios sean coherentes.

Uso básico de dos!

Podemos usar dos! para modificar de manera atómica el valor de un atom. En este ejemplo, incrementamos un valor almacenado en un atom:

(def a (atom 0)) (dos! a inc) @a ;; 1

Transacciones con múltiples atoms

Podemos usar dos! para modificar varios atoms en una única transacción:

(def a (atom 0)) (def b (atom 10)) (dos! a inc b dec) @a ;; 1 @b ;; 9