John Barton (2013-12-13T00:44:25.000Z)
On Thu, Dec 12, 2013 at 1:41 PM, Rick Waldron <waldron.rick at gmail.com>wrote:

>
>
>
> On Thu, Dec 12, 2013 at 2:56 PM, John Barton <johnjbarton at google.com>wrote:
>
>>
>>
>>
>> On Thu, Dec 12, 2013 at 11:53 AM, Mark S. Miller <erights at google.com>wrote:
>>>
>>> Keep in mind that infix ! is proposed <
>>> http://wiki.ecmascript.org/doku.php?id=strawman:concurrency> for use in
>>> ES7 to mean "do this operation eventually", e.g.,
>>>
>>>     p2 = p1 ! foo(a, b);
>>>
>>
>> Please do not do this ;-)
>> jjb
>>
>
> John, I agree with you on this and have expressed my concern in the past.
>
> I still contend that using "!" to indicate some async characteristic just
> reads contradictorily if we consider that "!" as an exclamation is also
> used to indicate urgency or immediacy—which are absolutely the opposite of
> "async". Of course, it could be argued that using "!" to indicate logical
> negation doesn't match its written punctuation meaning either, but that
> case is unrelated to both the original meaning and the opposite of the
> original meaning (the same arguments are true for its factorial symbol, ML,
> Scheme, Ruby and Haskell meanings).
>
> The concurrency strawman[0] proposes "!" as an infix operator, and gives
> this as a simple example:
>
>   function add(x, y) { return x + y; }
>   const sumP = add ! (3, 5); //sumP resolves in a later turn to 8.
>
>
offline Mark lured me in to making more suggestions. I bit:

p1 >< foo(a,b);  // p1 "eventually when the sand runs out" foo(a,b);
p1 <> foo(a,b); // Because a wikipedia page has diamond for temporal logic
'eventually'.

I guess angle brackets in general are trouble however, I recall some issues
with <html> and JS.

// Non-uniform tokens, maybe "modified tokens", where | isn't an operator
but is part of new tokens:
p1|.foo(a,b);  // can't we have bar dot ?
p1|['foo'](a,b);  // Here we have |[ ... ]
p1.foo|(a,b);  // I'm just substituting | for ! in the examples in [0].

p1~.foo(a,b);  // not 'now'
p1~['foo'](a,b);  // Here we have ~[ ... ]
p1.foo~(a,b);  // I'm just subst ~ for ! in the [0] examples.
Yes, ~ and | have meanings, but ! is so so much more common.


>
> [0] http://wiki.ecmascript.org/doku.php?id=strawman:concurrency
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20131212/b44928e8/attachment-0001.html>
forbes at lindesay.co.uk (2013-12-16T15:08:09.355Z)
offline Mark lured me in to making more suggestions. I bit:

```js
p1 >< foo(a,b);  // p1 "eventually when the sand runs out" foo(a,b);

p1 <> foo(a,b); // Because a wikipedia page has diamond for temporal logic 'eventually'.
```

I guess angle brackets in general are trouble however, I recall some issues
with html and JS.

```js
// Non-uniform tokens, maybe "modified tokens", where | isn't an operator but is part of new tokens:
p1|.foo(a,b);  // can't we have bar dot ?
p1|['foo'](a,b);  // Here we have |[ ... ]
p1.foo|(a,b);  // I'm just substituting | for ! in the examples in [0].

p1~.foo(a,b);  // not 'now'
p1~['foo'](a,b);  // Here we have ~[ ... ]
p1.foo~(a,b);  // I'm just subst ~ for ! in the [0] examples.
```

Yes, ~ and | have meanings, but ! is so so much more common.