<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jan 14, 2014 at 5:44 PM, Brendan Eich <span dir="ltr"><<a href="mailto:brendan@mozilla.com" target="_blank">brendan@mozilla.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">Kevin Smith wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I'll stop there, because I don't know the details of the proposal.<br>
</blockquote>
<br></div>
Allowing value objects (and perhaps mutable object) to define operators means giving up some invariants, similar to proxies which can have incoherent has/get etc.<br>
<br>
So I'm not sure what you are waiting for. A badly written user-defined value object? Those may be easy to cough up in order to complain about extensibility, but the whole point of value objects is to avoid hardcoding.<br>

<br>
If you want an int64 spec/impl to evaluate, that'll take a bit longer. Preview:<br>
<br>
js> 0L == 0<br>
true<br>
js> 0L === 0<br>
false<br>
js> typeof 0L<br>
"int64"<br>
js> 0UL == 0<br>
true<br>
js> 0UL === 0<br>
false<br>
js> 0UL == 0L<br>
true<br>
js> 0UL === 0L<br>
false<br>
js> typeof 0UL<br>
"uint64"<br></blockquote><div><br></div><div>What about:</div><div><br></div><div>    0L == "0"</div><div><br></div><div>How is "===" defined for user-defined value types?  In terms of the T == T overload?</div>
<div><br></div><div>    value class x {</div><div>        x == x () { ... }</div><div>    }</div><div><br></div><div><br></div></div></div></div>