<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Although it is more work for the person writing code, I believe having<br>
to explicitly use keywords (await or yield) in function bodies makes<br>
it very clear what is happening, and ultimately leads to better code<br>
with less potential for human error in the long run.<br>
...<br>
The beauty of JavaScript from the very beginning (the reason I love<br>
JavaScript) is that dealing with asynchronous behavior is something a<br>
JavaScript developer is forced to do from the get go.</blockquote><div><br></div><div>I start from the premise that this explicitness is already a huge and unmanageable problem through observation. Note my observation that nesting various types of effects (async isn't the only one) makes this totally unmanageable. If it wasn't, the status quo would be fine, but it isn't.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Introducing invisible asynchronous behavior would deviate from that (and be more like Java). <br></blockquote><div><br></div><div>The beauty of algebraic effects is that these side-effects can't just randomly leak. If you're concerned about any particular code path having these side-effects you can catch all the effects in that code-path. This is very much unlike Java. That way you opt-in to that guarantee when you need it, instead of forcing every little thing along the way make that decision.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<span class=""><br>
> we're not able to control scheduling or context in async functions?<br>
<br>
</span>I think we can:<br>
<div class=""><div class="h5"><br></div></div></blockquote><div><br></div><div>Your example demonstrates that explicitness can solve it but that is exactly the problem that this proposal is trying to address. If you don't agree with the premise that this is unmanageable there isn't much more to it.</div></div><br></div></div>