<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Sep 17, 2008, at 10:13 PM, Mark S. Miller wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">On Wed, Sep 17, 2008 at 6:50 PM, Maciej Stachowiak <span dir="ltr">&lt;<a href="mailto:mjs@apple.com">mjs@apple.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> <div style=""><br><div><blockquote type="cite"><div dir="ltr"><div class="Ih2E3d"><br>I agree that typeof 1.5m == typeof 1.1m. However, I do not agree that 1.1m == 1.1. These should be !=, since they represent distinct real numbers.</div> </div></blockquote><div><br></div><div>It seems to me that Brendan said 1.1m != 1.1 and did not question this.</div><div class="Ih2E3d"></div></div></div></blockquote><div><br>Brendan, please correct me if I misrepresent your argument.<br> <br>I took Brendan to be saying that<br><br>1) If typeof 1.1m were 'number' then we'd be obligated to have 1.1m == 1.1.<br><br>2) We want 1.1m != 1.1.<br><br>3) Therefore, typeof 1.1m must not be 'number'.<br> <br>I disagree with #1 and thus #3.</div></div></div></blockquote><div><br></div>Here is what I wrote:</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Without "use decimal", typeof 1.1m must not be "number" to preserve</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">this same invariant [that a === b  &lt;=>  typeof a == typeof b &amp;&amp; a == b].</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Otherwise (without "use decimal") 1.5m == 1.5</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">but 1.1m != 1.1, so without making typeof 1.5m != typeof 1.1m, we</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">cannot have typeof 1.5m == "number".</div></blockquote></div><div><br></div></div><div>Please expand your syllogistic reasoning:</div><div><br></div><div>Major premise #1: a == b</div><div>Minor premise #1: typeof a == typeof b</div><div>Conclusion #1: a === b</div><div>(you can switch == and === above -- the implication goes both ways and choice of == or === for typeof a OP typeof b does not matter since typeof's result is of string type.)</div><div><br></div><div>Major premise #2: 1.5m == 1.5</div><div>Minor premise #2: typeof 1.5m == "number" (your position, IIUC)</div><div>Conclusion #2: 1.5m === 1.5</div><div>(by Conclusion #1 and ES1-3 (which define typeof 1.5 == "number"))</div><div><br></div><div>Counter-example: 1.1m != 1.1</div><div>but typeof 1.1m == typeof 1.1 in your proposal (again IIUC)</div><div><br></div><div>This is a for-all problem. If there exists some double value x such that, for the decimal form y spelled literally using the same digits but with an 'm' suffix, x != y, yet typeof x == typeof y, then typeof must depend on whether its operand value converts losslessly to decimal from double and double from decimal.</div><div><br></div><div>This is broken -- typeof should depend on type, not value.</div><div><br></div><div>Hence my position (Waldemar's too) that typeof 1.1m == typeof 1.5m &amp;&amp; typeof 1.1m == "decimal".</div><div><br></div><div><br></div><div><blockquote type="cite"><div dir="ltr"><div class="gmail_quote"><div>However, with the introduction of decimal, we've got cohorts galore. 1.1m has a different operational behavior than 1.1000m, but we've agree they should be ===. With the introduction of decimal, === no longer approximates a test of operational equivalence, and we still need such a test.</div></div></div></blockquote><div><br></div>=== does approximate operational equivalence apart from significance. Right? (I'm asking because I could be wrong, not rhetorically!)</div><div><br></div><div><blockquote type="cite"><div dir="ltr"><div class="gmail_quote"><div>0/-0 != 0/0. Does it thus seem wrong that -0 === 0? <br> <br>Well, yes, actually it does seem wrong to me, but we all accept that particular wrongness. This is just more of the same.</div></div></div></blockquote><div><br></div>A lot more.</div><div><br></div><div>Two wrongs don't make a right.</div><div><br></div><div>One exception to the rule is better than two, or 2^53 or larger.</div><div><br></div><div>/be</div><br></body></html>