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.

Reply via email to