Fernando, Sorry for just now responding, I don't know what happened to this email. /shrug.
If you want to give me credit, @hunterboerner is my GitHub handle and my name is Theron Boerner. Need that résumé material. :) — Theron On Sun, Sep 10, 2017 at 8:43 AM Fernando Tapia Rico <[email protected]> wrote: > I just published async_with v0.2.0 that ditches the dependency graph and > uses processes + messages to execute the clauses asynchronously. > https://github.com/fertapric/async_with > > I've also included a new test with the edge case you mentioned > https://github.com/fertapric/async_with/blob/master/test/async_with_test.exs#L534-L554 > > Here is the PR with all the changes: > https://github.com/fertapric/async_with/pull/1 > > I would like to mention you guys in the README for all the help. Could > give me a list of name + handlers that I should include? > > Thanks! > > On Saturday, September 9, 2017 at 11:16:19 PM UTC+2, John Wahba wrote: >> >> I took a bit of a different approach: instead of spawning new processes >> when all the conditiones match: I spawn them all as futures and they block >> until their dependent futures return: >> https://github.com/johnwahba/async_with >> >> https://github.com/johnwahba/async_with/blob/master/test/async_with_test.exs >> <- (has an expanded macro in the comments) >> >> >> On Friday, September 8, 2017 at 2:12:47 PM UTC-7, Fernando Tapia Rico >> wrote: >>> >>> Thanks for the feedback Theron! >>> >>> Interesting...instead of using the dependency graph you are spawning new >>> processes when all the conditions (the right vars) are matched. It's >>> definitely an idea worth exploring. >>> >>> On Friday, September 8, 2017 at 9:52:00 PM UTC+2, Theron Boerner wrote: >>>> >>>> Hi Fernando, >>>> >>>> Great work on this implementation! However, there are a few edge cases >>>> that you do not handle. E.g. >>>> >>>> async with a <- 1, >>>> b <- :timer.sleep(1000), >>>> c <- IO.inspect(a), >>>> d <- {a, b} do >>>> ... >>>> end >>>> >>>> That *should* print out "1" immediately because c only has a >>>> dependency on a and is unrelated to b, however, your implementation does >>>> not. I've been discussing some of these edge cases with José, Luke Imhoff, >>>> et al for a few months and slowly built up this gist. >>>> <https://gist.github.com/hunterboerner/96bc022d1ac131c21c4ce7f12756d0c3> As >>>> you can see, that gist is a complete mess so Luke and I began to rewrite it >>>> in https://github.com/kronicdeth/async_with. John Wahba proposed an >>>> alternative implementation to me at ElixirConf that eliminates the need to >>>> compute a dependency graph so we're going to be implementing that version >>>> sometime soon and share it here when we have a working version on GitHub. >>>> >>>> - Theron >>>> >>>> On Fri, Sep 8, 2017 at 5:07 AM Fernando Tapia Rico <[email protected]> >>>> wrote: >>>> >>>>> I wanted to share with you guys >>>>> https://github.com/fertapric/async_with, which is the implementation >>>>> of "async with", one of the "José goes crazy" ideas mentioned in this >>>>> proposal :) I hope you like it! >>>>> >>>>> Any feedback or help is more than welcome! >>>>> >>>>> On Thursday, November 19, 2015 at 4:54:15 PM UTC+1, José Valim wrote: >>>>> >>>>>> Please open up an issue. If we support such, we would need to support >>>>>> it both on "comprehensions" and "with". >>>>>> >>>>> >>>>>> >>>>>> >>>>>> *José Valim* >>>>>> www.plataformatec.com.br >>>>>> Skype: jv.ptec >>>>>> Founder and Director of R&D >>>>>> >>>>>> On Thu, Nov 19, 2015 at 5:05 PM, Vincent Siliakus <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> Op zaterdag 14 november 2015 13:57:08 UTC+1 schreef José Valim: >>>>>>>> >>>>>>>> The implementation is already in master thanks to lexmag. :) >>>>>>>> >>>>>>>> >>>>>>> Works great, I love this addition! >>>>>>> >>>>>>> I was wondering though since the current implementation uses 'case' >>>>>>> internally, if support for something like this is still planned: >>>>>>> >>>>>>> with x when x < 2 <- 4, do: :ok >>>>>>> => 4 >>>>>>> >>>>>>> with x when x > 2 <- 4, do: :ok >>>>>>> => :ok >>>>>>> >>>>>>> I think this would allow even more clunky, nested code to be >>>>>>> rewritten much more elegantly with 'with'. >>>>>>> >>>>>>> >>>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "elixir-lang-core" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/elixir-lang-core/9a5fb079-07a7-44d4-ab3d-d6ab1ab8a9bd%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/elixir-lang-core/9a5fb079-07a7-44d4-ab3d-d6ab1ab8a9bd%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> -- > You received this message because you are subscribed to the Google Groups > "elixir-lang-core" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elixir-lang-core/db5ad17a-3ed4-4bba-b117-264889233bb5%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-core/db5ad17a-3ed4-4bba-b117-264889233bb5%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/CAOtk34cB906Y6e4ORdxZFw87f0VHXroDmxwhN6kQ0ngPqmHxhQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
