On 28 August 2013 11:50, Alan Busby <thebu...@gmail.com> wrote: > On Wed, Aug 28, 2013 at 12:18 PM, guns <s...@sungpae.com> wrote: > >> Oh, I was confused; I was thinking about sentinel values in user code. >> Yes, I imagine a single private (Object.) would work just fine, with >> very little overhead. >> > > First, I'd hope that sentinel values would be handled by the back-end > implementation, as we're seeing core.sync implemented on other > systems like ZeroMQ already. > > Second, as (Object.) doesn't play nicely over the wire, a random UUID > or similar value would be much preferred. >
Hi Alan, Agreed on all the above. The issue is not so much what sentinel value is used internally, but what sentinel value gets exposed to user code. > > Third, I'd recommend reviewing, > http://clojure.com/blog/2013/06/28/clojure-core-async-channels.html > to understand why core.async is not just a better queue. > > Fourth, if you dislike how core.async works, just wrap it in your own > library so it works the way you'd like. > It looks like "core.async-with-nil" is available on Clojars. ;) > That's precisely what I'm trying to avoid, and the reason why I've been raising the topic here - the last thing we want in the ecosystem is more fragmentation with incompatible subsystems and protocols. That's the Lisp Curse all over again. I think we should aspire to better in the Clojure community - which means working together to make the best implementation possible and rallying around it. Sending nil as a value over channels is clearly a significant issue if people are willing to fork or create a new wrapper for core.async in order to achieve it. Better, in my view, to make a breaking change to core.async now to fix this issue rather than encouraging a free-for-all. I'm reminded of Rich Hickey's keynote "The Language of the System", which emphasised composing systems out of simple services that communicate via values. core.async would IMHO be a much more useful tool for realising this sort of vision if it is able transmit arbitrary Clojure values (i.e. including nil). -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.