Heh, yes, damned if you do, etc. etc. I was trying to think up a practical 
example where this would cause problems (e.g. in CSS libraries strings and 
numbers often mix), but all my cases involved an `==`-using third party 
library, in which case you'd just pass it `Number(myLong)` instead of `myLong` 
directly and move on with your life.

-----Original Message-----
From: Brendan Eich [mailto:[email protected]] 
Sent: Tuesday, January 14, 2014 21:48
To: Domenic Denicola
Cc: Kevin Smith; es-discuss
Subject: Re: Operator overloading for non-value objects

Domenic Denicola wrote:
> From: es-discuss [mailto:[email protected]] On Behalf Of 
> Brendan Eich
>
>> >  js>  0L == "0"
>> >  typein:2:0 TypeError: no operator function found for ==
>
> Hmm, upon seeing this in action, I'm not sure how I feel about `==` throwing.

Oh for crying out loud!

half a :-)

You can't please anyone around here...

>   It doesn't normally do that (modulo bad custom `valueOf`/`toString` 
> methods), so I think there will be a lot of code that assumes when it `==`s 
> two values it doesn't need to wrap that expression in `try`/`catch`.
>
> `do { try { x == y } catch { false } }`, the new `x == y`?

So what? Exceptions for the insane (intransitive, lossy) == cases are
*better* than toString/valueOf.

JS is damned if it does, and damned if it doesn't.

Anyway, value objects are not dispatching to toString or valueOf when used with 
arithmetic operators. That's the design. Given == and <=, the rest follows.

/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to