Opaque string representation of channels in Clojurescript core.async
Description
In clojurescript, (str (chan)) returns the string "[object Object]". This is different from JVM Clojure behavior per se, and more practically, it can result in hard-to-debug stack traces, such as the attached one.
The attached backtrace doesn't reach my application code, and does not show any cljs.core.async code either. Therefore it's hard to figure out that I was mishandling a channel. A nicer string representation of channels would have saved me 20 minutes of head-scratching!
Environment
Clojurescript 1.9.542 core.async 0.3.442
Attachments
1
Activity
Show:
Alex Miller May 23, 2017 at 3:38 AM
It's never been worked on, but we have talked about having the ability to name or add meta to channels.
In clojurescript,
(str (chan))
returns the string"[object Object]"
. This is different from JVM Clojure behavior per se, and more practically, it can result in hard-to-debug stack traces, such as the attached one.The attached backtrace doesn't reach my application code, and does not show any
cljs.core.async
code either. Therefore it's hard to figure out that I was mishandling a channel. A nicer string representation of channels would have saved me 20 minutes of head-scratching!