• Lojcs@lemm.ee
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    For instance, there would have been no need for the async keyword in the language itself.

    Can you explain how?

    • soulsource
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      First things first: I haven’t fully thought this through, as I haven’t attempted to implement it (yet). It was just an idea I had while working on higher-free-macro.

      It wouldn’t yield the same syntax of course, but you could express the flow of the async computation in the terms of a Free Monad based embedded domain specific language. The interpreter for the eDSL in question would then do the equivalent of the async runtimes we have currently.

      I could imagine that the syntax could be pretty nice when using the do-notation from higher.

      However, since I haven’t tried implementing it, I can’t say for certain that there aren’t any hard walls one could hit, especially related to Rust’s ownership model, or more complex dependency trees.