One can build go like things on top of generators, however this doesn't solve your problem, as these generators (pointed to in your link) cannot yield through more than a single function. They have the same semantics as yield in python or C# (or go in Clojure). That is to say every function in the chain must do:
for(x in generator) yield x; In order to pass along the value. This is exactly the same as making every function in your system contain a go, and that go's body containing something like: (go (>! ret-chan (<! (my-func)))) What you are asking for requires something like delimited continuations, and very, very few platforms support this. Timothy On Wed, Apr 9, 2014 at 2:11 AM, Moritz Ulrich <mor...@tarn-vedra.de> wrote: > What on this page would solve your problem? I just see > Generators/Iterators, Array Comprehensions, lexical let and > destructuring assignment. > > On Wed, Apr 9, 2014 at 9:39 AM, t x <txrev...@gmail.com> wrote: > > I believe > https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7 > > suffices. > > > > However, it's currently Firefox only and no Chrome. > > > > On Tue, Apr 8, 2014 at 8:51 PM, Timothy Baldridge <tbaldri...@gmail.com> > wrote: > >> What is going to fulfill a promise? How will you know when a promise is > >> fulfilled. In a single threaded VM like JS you're stuck with callbacks. > >> Nothing short of full program transformation will give you any better > >> experience than core.async. > >> > >> A good way to look at it is this...if you do this in ClojureScript what > >> javascript is this supposed to execute? > >> > >> (deref (promise)) > >> > >> The only way this can work is with a code transform like go. Perhaps > someday > >> a new version of JS will arise that presents a different solution, but > until > >> then core.async is the best you're going to get. > >> > >> Timothy > >> > >> > >> On Tue, Apr 8, 2014 at 3:11 PM, t x <txrev...@gmail.com> wrote: > >>> > >>> I'm guilty of the X-Y problem. > >>> > >>> > >>> I'm trying to, inside of CLJS, write a simple WebOS. > >>> > >>> > >>> So I want to simultaneously be able to run things like: > >>> * a notepad app > >>> * an IRC app > >>> * a webRTC video chat app > >>> > >>> > >>> I have built each of these individual pieces in CLJS, -- but combining > >>> them / having them work well together in a clean, non-spaghetti way is > >>> harder than I thought. > >>> > >>> > >>> > >>> ### The main problems here I have are: > >>> > >>> * multi-threading (run all three apps at once) and > >>> * have is inter-"process" (in this case app) communication > >>> > >>> > >>> I'd also prefer to do this in a way where I write each app as if it's > >>> the only app running (i.e. no callback hell.) > >>> > >>> > >>> One possible approach is to make each app a "go-thread", but then I > >>> run into the issue of: > >>> > >>> (go ... (>! ... ) (<! ... )) all forced into the same lexical > function. > >>> > >>> > >>> > >>> I'm looking for alternatives to this. By using: > >>> > >>> settimeout(func, 0); I should be able to fire off 3 threads > >>> > >>> now, if I had something like promises, I can do inter-process > >>> communication > >>> > >>> > >>> > >>> I'm still working this through -- so if my thinking is sloppy / > >>> unclear, please point it out so I can make it clearer. > >>> > >>> > >>> Thanks! > >>> > >>> On Tue, Apr 8, 2014 at 2:05 PM, James Reeves <ja...@booleanknot.com> > >>> wrote: > >>> > What exactly are you trying to do? Could you describe the problem > you're > >>> > trying to solve in more detail? > >>> > > >>> > - James > >>> > > >>> > > >>> > On 8 April 2014 22:02, t x <txrev...@gmail.com> wrote: > >>> >> > >>> >> I'd really like to avoid callbacks. :-) > >>> >> > >>> >> If cljs had promises, it would suffice. :-) > >>> >> > >>> >> On Tue, Apr 8, 2014 at 2:00 PM, Gary Trakhman < > gary.trakh...@gmail.com> > >>> >> wrote: > >>> >> > I think you might be able to use put! with a callback, or (go (>! > >>> >> > ..)) > >>> >> > within foo for a transient go process. Not sure if there's any > ill > >>> >> > effects. > >>> >> > > >>> >> > > >>> >> > On Tue, Apr 8, 2014 at 4:51 PM, t x <txrev...@gmail.com> wrote: > >>> >> >> > >>> >> >> Hi, > >>> >> >> > >>> >> >> > >>> >> >> * I am aware of core.async. However, I don't like the fact that > >>> >> >> (go > >>> >> >> ... ) is a macro, thus forcing the >! and <! to appear "in the > >>> >> >> body", > >>> >> >> and I can't do nested things like: > >>> >> >> > >>> >> >> (defn foo [chan] > >>> >> >> (let [x (<! chan)] ... )) > >>> >> >> > >>> >> >> (go ... (foo ... )) > >>> >> >> > >>> >> >> > >>> >> >> * For the following, I only need it to work in ClojureScript. I > >>> >> >> don't need it to work in Clojure. Furthermore, we can assume > browser > >>> >> >> = > >>> >> >> latest Firefox, or browser = latest Chrome. > >>> >> >> > >>> >> >> > >>> >> >> Now, my question: is there a library which provides "true" > >>> >> >> lightweight Clojurescript threads? > >>> >> >> > >>> >> >> > >>> >> >> Thanks! > >>> >> >> > >>> >> >> -- > >>> >> >> 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. > >>> >> > > >>> >> > > >>> >> > -- > >>> >> > 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. > >>> >> > >>> >> -- > >>> >> 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. > >>> > > >>> > > >>> > -- > >>> > 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. > >>> > >>> -- > >>> 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. > >> > >> > >> > >> > >> -- > >> "One of the main causes of the fall of the Roman Empire was that-lacking > >> zero-they had no way to indicate successful termination of their C > >> programs." > >> (Robert Firth) > >> > >> -- > >> 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. > > > > -- > > 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. > > -- > 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. > -- "One of the main causes of the fall of the Roman Empire was that-lacking zero-they had no way to indicate successful termination of their C programs." (Robert Firth) -- 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.