Skip to content

Instantly share code, notes, and snippets.

@noisesmith
Created March 8, 2016 17:55
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save noisesmith/0fd7db0d239113c1d0c8 to your computer and use it in GitHub Desktop.
macro expansion of a simple go block
=> (macroexpand-1 '(clojure.core.async/go (+ 1 1)))
(clojure.core/let [c__5997__auto__ (clojure.core.async/chan 1) captured-bindings__5998__auto__ (clojure.lang.Var/getThreadBindingFrame)] (clojure.core.async.impl.dispatch/run (clojure.core/fn [] (clojure.core/let [f__5999__auto__ (clojure.core/fn state-machine__5821__auto__ ([] (clojure.core.async.impl.ioc-macros/aset-all! (java.util.concurrent.atomic.AtomicReferenceArray. 7) 0 state-machine__5821__auto__ 1 1)) ([state_33268] (clojure.core/let [old-frame__5822__auto__ (clojure.lang.Var/getThreadBindingFrame) ret-value__5823__auto__ (try (clojure.lang.Var/resetThreadBindingFrame (clojure.core.async.impl.ioc-macros/aget-object state_33268 3)) (clojure.core/loop [] (clojure.core/let [result__5824__auto__ (clojure.core/case (clojure.core/int (clojure.core.async.impl.ioc-macros/aget-object state_33268 1)) 1 (clojure.core/let [inst_33266 (. clojure.lang.Numbers (add 1 1))] (clojure.core.async.impl.ioc-macros/return-chan state_33268 inst_33266)))] (if (clojure.core/identical? result__5824__auto__ :recur) (recur) result__5824__auto__))) (catch java.lang.Throwable ex__5825__auto__ (clojure.core.async.impl.ioc-macros/aset-all! state_33268 clojure.core.async.impl.ioc-macros/CURRENT-EXCEPTION ex__5825__auto__) (clojure.core.async.impl.ioc-macros/process-exception state_33268) :recur) (finally (clojure.lang.Var/resetThreadBindingFrame old-frame__5822__auto__)))] (if (clojure.core/identical? ret-value__5823__auto__ :recur) (recur state_33268) ret-value__5823__auto__)))) state__6000__auto__ (clojure.core/-> (f__5999__auto__) (clojure.core.async.impl.ioc-macros/aset-all! clojure.core.async.impl.ioc-macros/USER-START-IDX c__5997__auto__ clojure.core.async.impl.ioc-macros/BINDINGS-IDX captured-bindings__5998__auto__))] (clojure.core.async.impl.ioc-macros/run-state-machine-wrapped state__6000__auto__)))) c__5997__auto__)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment