For the purposes of building a webos: Having yield + co-routines gives me cooperative multi-threading -- which is basically all I need.
The main difference between co-routines and go-routines. Is that for (go ... ) blocks, the <! and >! must be lexically embedded within the block; whereas with co-routines, the send/receive can be called in functions I call. On Wed, Apr 9, 2014 at 1: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. -- 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.