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.

Reply via email to