What Daniel said. The call is incorrect, its args are alt-shaped, but it calls alt*s*.
alt is the macro that is shaped like cond. alts is the function that takes a vector Both take splatted options at the end. Can never use single bang* except within go.* go => ! thread => !! Unfortunately if the two are confused, the exception will happen... probably elsewhere. On Thursday, August 14, 2014 2:46:22 PM UTC-4, Eric Normand wrote: > > Hi there, > > The :default option is for a *value* that should be returned if none of > the channels are available. The expression is evaluated *before* the > async/alts! call happens (just like normal parameters). > > I think you are misunderstanding alts!. It should be used like this > > (let [[val ch] (async/alts! [[inner-chan e]] :default :default)] > (if (= :default val) > (println "inner-chan was not ready") > (if val > (println "did the put to inner-chan") > (println "inner-chan is closed")))) > > I hope that helps. Let me know if you have any more questions. > > Eric > > On Thursday, August 14, 2014 11:03:01 AM UTC-5, dgrnbrg wrote: >> >> When I use alts!, it seems that both the put and :default action run >> every time. I've included the code sample below: >> >> (let [inner-chan (async/chan (async/buffer 1000)) >> mult (async/mult inner-chan) >> (async/thread >> (while true >> (let [e (.take linked-blocking-queue)] >> (async/alts! >> [[inner-chan e]] (println "did the put") >> :default (println "failed to put") >> :priority true))))) >> >> >> Elsewhere in the code, I tap the mult before I start putting elements >> onto the linked-blocking-queue. For every element I put onto the LBQ, I see >> both messages: "did the put" and "failed to put". What is going on here? >> > -- 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/d/optout.