Does Clojure's core.async work with RoboVM? <p>I've used <a href="https://github.com/oakes/lein-fruit" rel="nofollow">lein-fruit</a> to generate a basic Clojure project that targets iOS through <a href="http://www.robovm.org/" rel="nofollow">RoboVM</a>. I've introduced core.async to pass button taps along a channel, but mutating the button in the <code>go</code> block doesn't seem to have an effect.</p> <p>Is there reason to believe the Java implementation of core.async doesn't work under RoboVM? </p> <p>Here's my code, slightly modified from the basic lein-fruit template.</p> <pre class="lang-lisp prettyprint-override"><code>(ns core-async-demo.core (:require [core-async-demo.core-utils :as u] [clojure.core.async :refer [go chan put! &lt;!]])) (def window (atom nil)) (def taps (chan)) (defn init [] (let [main-screen (u/static-method :uikit.UIScreen :getMainScreen) button-type (u/static-field :uikit.UIButtonType :RoundedRect) button (u/static-method :uikit.UIButton :fromType button-type) normal-state (u/static-field :uikit.UIControlState :Normal) click-count (atom 0)] (doto button (.setFrame (u/init-class :coregraphics.CGRect 115 121 91 37)) (.setTitle "Click me!" normal-state) (.addOnTouchUpInsideListener (proxy [org.robovm.cocoatouch.uikit.UIControl$OnTouchUpInsideListener] [] (onTouchUpInside [control event] (put! taps true))))) (reset! window (u/init-class :uikit.UIWindow (.getBounds main-screen))) (go (loop [_ (&lt;! taps)] (.setTitle button (str "Click #" (swap! click-count inc)) normal-state) (recur (&lt;! taps)))) (doto @window (.setBackgroundColor (u/static-method :uikit.UIColor :lightGrayColor)) (.addSubview button) .makeKeyAndVisible))) </code></pre>