Atomically sets the value of atom to the new value if and only if the current value of the atom is identical to the old value held by the atom. Returns true if set happens, else it returns false.
Following is the syntax.
(compare-and-set! atom-name oldvalue newvalue)
Parameters − ‘atom-name’ is the name of the atom whose value needs to be reset. ‘oldvalue’ is the current old value of the atom. ‘newvalue’ is the new value which needs to be assigned to the atom.
Return Value − The atom with the new value will be set only if the old value is specified properly.
An example on how this is used is shown in the following program.
(ns clojure.examples.example (:gen-class)) (defn example  (def myatom (atom 1)) (println @myatom) (compare-and-set! myatom 0 3) (println @myatom) (compare-and-set! myatom 1 3) (println @myatom)) (example)
The above program will produce the following output.
1 1 3