Rick Waldron (2013-12-12T21:41:14.000Z)
domenic at domenicdenicola.com (2013-12-24T23:48:13.819Z)
>> p2 = p1 ! foo(a, b); > > Please do not do this ;-) 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](http://wiki.ecmascript.org/doku.php?id=strawman:concurrency) proposes `!` as an infix operator, and gives this as a simple example: ```js function add(x, y) { return x + y; } const sumP = add ! (3, 5); //sumP resolves in a later turn to 8. ``` I suppose this isn't so bad, but what about this: ```js !isComparable!(a, b); ``` I don't think it would be hard to explain this, it's just (subjectively) strange to see. Maybe I'll get over it? The requisite "[No LineTerminator here]" imposed by "!" (as an infix operator) creates a restriction that will fail silently: ```js function f(n){ return n; } f (1); // 1 f !(2); // false (but probably expected 2) ``` Which seems like the kind of issue that the committee has balked at in the past.
forbes at lindesay.co.uk (2013-12-16T15:05:29.000Z)
>> 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](http://wiki.ecmascript.org/doku.php?id=strawman:concurrency) proposes `!` as an infix operator, and gives this as a simple example: ```js function add(x, y) { return x + y; } const sumP = add ! (3, 5); //sumP resolves in a later turn to 8. ``` I suppose this isn't so bad, but what about this: ```js !isComparable!(a, b); ``` I don't think it would be hard to explain this, it's just (subjectively) strange to see. Maybe I'll get over it? The requisite "[No LineTerminator here]" imposed by "!" (as an infix operator) creates a restriction that will fail silently: ```js function f(n){ return n; } f (1); // 1 f !(2); // false (but probably expected 2) ``` Which seems like the kind of issue that the committee has balked at in the past.
forbes at lindesay.co.uk (2013-12-16T15:05:15.749Z)
>> 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](http://wiki.ecmascript.org/doku.php?id=strawman:concurrency) proposes `!` as an infix operator, and gives this as a simple example: ```js function add(x, y) { return x + y; } const sumP = add ! (3, 5); //sumP resolves in a later turn to 8. ``` I suppose this isn't so bad, but what about this: ```js !isComparable!(a, b); ``` I don't think it would be hard to explain this, it's just (subjectively) strange to see. Maybe I'll get over it? The requisite "[No LineTerminator here]" imposed by "!" (as an infix operator) creates a restriction that will fail silently: ```js function f(n){ return n; } f (1); // 1 f !(2); // false (but probably expected 2) ``` Which seems like the kind of issue that the committee has balked at in the past.