title: How are Atoms implemented in Clojurescript?
body: <p>In <a href="http://clojure.org/atoms" rel="nofollow noreferrer">Clojure to address concurrency</a> issues <a href="http://clojuredocs.org/clojure_core/clojure.core/atom" rel="nofollow noreferrer">we can use an atom</a> to write:</p>
  
  <pre><code>user=&gt; (def my-atom (atom 0))
  #'user/my-atom
  
  user=&gt; @my-atom
  0
  
  user=&gt; (swap! my-atom inc)
  1
  
  user=&gt; @my-atom
  1
  
  user=&gt; (swap! my-atom (fn [n] (* (+ n n) 2)))
  4
  </code></pre>
  
  <p>We know that this (in the Clojure implementation) is <a href="https://stackoverflow.com/questions/21806074/what-is-the-scala-equivalent-of-clojures-atom/21809866?noredirect=1#21809866">a wrapper around the Java Atomic object</a>. </p>
  
  <p>Interestingly enough, Atoms <a href="https://github.com/clojure/clojurescript/wiki/Differences-from-Clojure#wiki-concurrent-programming" rel="nofollow noreferrer">are replicated in ClojureScript</a>, at a Syntactic level - even though JavaScript runtimes don't have an Atomic reference. </p>
  
  <p>My question is, <strong>How are Atoms implemented in Clojurescript?</strong> Are they just an object Wrapper?</p>