Alex Russell (2013-12-12T18:02:21.000Z)
On Thu, Dec 12, 2013 at 9:40 AM, Brendan Eich <brendan at mozilla.com> wrote:

> Kevin Smith wrote:
>
>> My thoughts:
>>
>> Again, generators are not a good fit for arrows - generators define
>> sequences, not mappings.
>>
>
> Yep.
>
>
>  Secondly, we should be conservative in our usage of arrow-like operators
>> - we only have so many decent looking things left!
>>
>
> What's more, ~ has nothing to do with generators, which use * (function*,
> yield*). Incoherent grawlix is no-go.
>
>
>  Third, looking at your third case (and removing unnecessary parens):
>>
>>     var async = (a, b) ~> await a + await b;
>>
>> It's completely obvious to the reader (by virtue of the await
>> expressions) that we are looking at an async function.  Having a different
>> operator here offers neither the reader nor the parser any real help.  It
>> just makes the language more grawlixy and less DWIM.
>>
>
> The issue with 'await' is: apart from sequence vs. mapping, given that
> arrows have a limited Tennent's Correspondence Principle for not only
> |this| and |super|, is it confusing to have |arguments|, |yield|, and
> |await| not mean outer "bindings", vs. inner?


No.


>  This line of reasoning only applies to async arrows, and not to async
>> function declarations, expressions, or methods.  Again, arrows are by
>> nature syntax-light and tolerate a higher degree of "inference" than other
>> forms.
>>
>> My point is that we should reserve "await" within arrows to preserve
>> these design options down the road.  It can always be unreserved later.
>>
>
> I think you have a point, whether we make |await| work or ban it to avoid
> partial-TCP confusion.
>

I'll continue to point out that the confusion is largely a product of
language lawyering, not real-world expectations of JS behavior. Banning
await here is only a solution if you're also not going to ban an async
descriptor on the arrow expression. THAT is the mistake.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20131212/e50cdca8/attachment.html>
domenic at domenicdenicola.com (2013-12-24T23:42:23.704Z)
On Thu, Dec 12, 2013 at 9:40 AM, Brendan Eich <brendan at mozilla.com> wrote:

> The issue with 'await' is: apart from sequence vs. mapping, given that
> arrows have a limited Tennent's Correspondence Principle for not only
> `this` and `super`, is it confusing to have `arguments`, `yield`, and
> `await` not mean outer "bindings", vs. inner?


No.

> I think you have a point, whether we make `await` work or ban it to avoid
> partial-TCP confusion.

I'll continue to point out that the confusion is largely a product of
language lawyering, not real-world expectations of JS behavior. Banning
await here is only a solution if you're also not going to ban an async
descriptor on the arrow expression. THAT is the mistake.