Bruno Jouhier (2017-04-15T11:01:16.000Z)
I don't know the ins and outs of the "nobody likes", I'll just respond as a
"language user".

We do not expect `NaN` in 99.99% of our code, and we do not expect
infinities in 99.95% of it. Instead of having these values creep unnoticed
though the computations (and else branches executed because tests are
silently false) it would be better to have them turned into exceptions
(fail fast).

With a pragma I would just set the fail fast default at the top of every
module and override it in the few functions where special values are
expected. Impact will be low and code will remain _familiar_.

With a new set of operators, I'll have to replace the operators (almost)
everywhere in the code. I'll also have to create a new lint rule to enforce
the new operators everywhere, and I'll need to introduce a lint directive
for the exceptions. Big impact and code will look _strange_.

Obviously I prefer the pragma solution but I don't really care about the
pragma syntax. If "use ..." does not cut it there are other ways
(contextual `pragma` keyword?).

Bruno
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20170415/26dea9fd/attachment.html>
bjouhier at gmail.com (2017-04-15T11:02:26.304Z)
I don't know the ins and outs of the "nobody likes", I'll just respond as a
"language user".

We do not expect `NaN` in 99.99% of our code, and we do not expect
infinities in 99.95% of it. Instead of having these values creep unnoticed
though the computations (and else branches executed because tests are
silently false) it would be better to have them turned into exceptions
(fail fast).

With a pragma I would just set the fail fast default at the top of every
module and override it in the few functions where special values are
expected. Impact will be low and code will remain _familiar_.

With a new set of operators, I'll have to replace the operators (almost)
everywhere in the code. I'll also have to create a new lint rule to enforce
the new operators everywhere, and I'll need to introduce a lint directive
for the exceptions. Big impact and code will look _strange_.

Obviously I prefer the pragma solution but I don't really care about the
pragma syntax. If `"use ..."` does not cut it there are other ways
(contextual `pragma` keyword?).

Bruno