Skip to content

Instantly share code, notes, and snippets.

@amalloy
Created November 22, 2017 21:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amalloy/26ec8b8910c7c00bd7feaeef2307bc92 to your computer and use it in GitHub Desktop.
Save amalloy/26ec8b8910c7c00bd7feaeef2307bc92 to your computer and use it in GitHub Desktop.
user=> (pprint (macroexpand `(go (is (<! (+))))))
(let*
[c__6350__auto__
(clojure.core.async/chan 1)
captured-bindings__6351__auto__
(clojure.lang.Var/getThreadBindingFrame)]
(clojure.core.async.impl.dispatch/run
(fn*
[]
(clojure.core/let
[f__6352__auto__
(clojure.core/fn
state-machine__6139__auto__
([]
(clojure.core.async.impl.ioc-macros/aset-all!
(java.util.concurrent.atomic.AtomicReferenceArray. 7)
0
state-machine__6139__auto__
1
1))
([state_8894]
(clojure.core/let
[old-frame__6140__auto__
(clojure.lang.Var/getThreadBindingFrame)
ret-value__6141__auto__
(try
(clojure.lang.Var/resetThreadBindingFrame
(clojure.core.async.impl.ioc-macros/aget-object
state_8894
3))
(clojure.core/loop
[]
(clojure.core/let
[result__6142__auto__
(clojure.core/case
(clojure.core/int
(clojure.core.async.impl.ioc-macros/aget-object
state_8894
1))
1
(clojure.core/let
[inst_8892
(try
(clojure.core/let
[values__7924__auto__
(clojure.core/list (clojure.core/+))
result__7925__auto__
(clojure.core/apply
clojure.core.async/<!
values__7924__auto__)]
(if
result__7925__auto__
(clojure.test/do-report
{:type :pass,
:expected
'(clojure.core.async/<! (clojure.core/+)),
:actual
(clojure.core/cons
clojure.core.async/<!
values__7924__auto__),
:message nil})
(clojure.test/do-report
{:type :fail,
:expected
'(clojure.core.async/<! (clojure.core/+)),
:actual
(clojure.core/list
'not
(clojure.core/cons
'clojure.core.async/<!
values__7924__auto__)),
:message nil}))
result__7925__auto__)
(catch
java.lang.Throwable
t__7952__auto__
(clojure.test/do-report
{:type :error,
:expected
'(clojure.core.async/<! (clojure.core/+)),
:actual t__7952__auto__,
:message nil})))]
(clojure.core.async.impl.ioc-macros/return-chan
state_8894
inst_8892)))]
(if
(clojure.core/identical? result__6142__auto__ :recur)
(recur)
result__6142__auto__)))
(catch
java.lang.Throwable
ex__6143__auto__
(clojure.core.async.impl.ioc-macros/aset-all!
state_8894
2
ex__6143__auto__)
(if
(clojure.core/seq
(clojure.core.async.impl.ioc-macros/aget-object
state_8894
4))
(clojure.core.async.impl.ioc-macros/aset-all!
state_8894
1
(clojure.core/first
(clojure.core.async.impl.ioc-macros/aget-object
state_8894
4))
4
(clojure.core/rest
(clojure.core.async.impl.ioc-macros/aget-object
state_8894
4)))
(throw ex__6143__auto__))
:recur)
(finally
(clojure.lang.Var/resetThreadBindingFrame
old-frame__6140__auto__)))]
(if
(clojure.core/identical? ret-value__6141__auto__ :recur)
(recur state_8894)
ret-value__6141__auto__))))
state__6353__auto__
(clojure.core/->
(f__6352__auto__)
(clojure.core.async.impl.ioc-macros/aset-all!
clojure.core.async.impl.ioc-macros/USER-START-IDX
c__6350__auto__
clojure.core.async.impl.ioc-macros/BINDINGS-IDX
captured-bindings__6351__auto__))]
(clojure.core.async.impl.ioc-macros/run-state-machine-wrapped
state__6353__auto__))))
c__6350__auto__)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment