Skip to content

Instantly share code, notes, and snippets.

@jcromartie
Created July 13, 2013 19:35
Show Gist options
  • Save jcromartie/5991947 to your computer and use it in GitHub Desktop.
Save jcromartie/5991947 to your computer and use it in GitHub Desktop.
Macro expansion of (go (+ 1 1))
;; (macroexpand-1 '(go (+ 1 1)) yields ...
(clojure.core/let
[c__2247__auto__
(clojure.core.async/chan 1)
captured-bindings__2248__auto__
(clojure.lang.Var/getThreadBindingFrame)]
(clojure.core.async.impl.dispatch/run
(clojure.core/fn
[]
(clojure.core/let
[f__2249__auto__
(clojure.core/fn
state-machine__2118__auto__
([]
(clojure.core.async.impl.ioc-macros/aset-all!
(java.util.concurrent.atomic.AtomicReferenceArray. 5)
0
state-machine__2118__auto__
1
1))
([state_2297]
(clojure.core/let
[old-frame__2119__auto__
(clojure.lang.Var/getThreadBindingFrame)]
(try
(clojure.lang.Var/resetThreadBindingFrame
(clojure.core.async.impl.ioc-macros/aget-object
state_2297
3))
(clojure.core/loop
[]
(clojure.core/let
[result__2120__auto__
(clojure.core/case
(clojure.core/int
(clojure.core.async.impl.ioc-macros/aget-object
state_2297
1))
1
(clojure.core/let
[inst_2295 (+ 1 1) state_2297 state_2297]
(clojure.core.async.impl.ioc-macros/return-chan
state_2297
inst_2295)))]
(if
(clojure.core/identical? result__2120__auto__ :recur)
(recur)
result__2120__auto__)))
(finally
(clojure.lang.Var/resetThreadBindingFrame
old-frame__2119__auto__))))))
state__2250__auto__
(clojure.core/->
(f__2249__auto__)
(clojure.core.async.impl.ioc-macros/aset-all!
clojure.core.async.impl.ioc-macros/USER-START-IDX
c__2247__auto__
clojure.core.async.impl.ioc-macros/BINDINGS-IDX
captured-bindings__2248__auto__))]
(clojure.core.async.impl.ioc-macros/run-state-machine
state__2250__auto__))))
c__2247__auto__)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment