<html><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
</head><body bgcolor="#FFFFFF" text="#000000">Thanks for this reply.<br>
<blockquote style="border: 0px none;" 
cite="mid:B2C3FB2A-C599-45CA-9ABC-E1BB63F8CBAF@apple.com" type="cite">
  <div style="margin:30px 25px 10px 25px;" class="__pbConvHr">
    <div style="display:table;width:100%;border-top:1px solid 
#EDEEF0;padding-top:5px"><div 
style="display:table-cell;vertical-align:middle;padding-right:6px;"><img
 photoaddress="fpizlo@apple.com" photoname="Filip Pizlo" 
src="cid:part1.05040508.05070408@mozilla.com" 
name="compose-unknown-contact.jpg" height="25px" width="25px"></div>   <div
 
style="display:table-cell;white-space:nowrap;vertical-align:middle;width:100%">
        <a moz-do-not-send="true" href="mailto:fpizlo@apple.com" 
style="color:#737F92 
!important;padding-right:6px;font-weight:bold;text-decoration:none 
!important;">Filip Pizlo</a></div>   <div 
style="display:table-cell;white-space:nowrap;vertical-align:middle;">   
  <font color="#9FA2A5"><span style="padding-left:6px">September 8, 2013
 1:56 PM</span></font></div></div>
  </div>
  <div style="color: rgb(136, 136, 136); margin-left: 24px; 
margin-right: 24px;" __pbrmquotes="true" class="__pbConvBody"><meta 
content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"><div>We
 have two choices:</div><div><br></div><div>A) Reject the notion that 
'obj' appearing once in the original source results in multiple calls to
 some hook on 'obj' (valueOf, toBoolean, whatever).</div><div>B) Allow 
multiple calls along with all that it entails.</div><div><br></div><div>I
 like the idea of B because as weird as it is, the pros outweigh the 
cons, in my own accounting.  I hope I didn't miss any pros or cons.</div></div>
</blockquote>
<br>
I mentioned another in private email to you, while noting that it's too 
narrow: a value object class would be able to define a static "zero" 
value (observably immutable and with copy not reference semantics, as 
for all value object instances). This would be bit-compared by 
ToBoolean.<br>
<br>
Problem is it doesn't support signed zero (IEEE 754r decimal has them, 
just like 754 binary floating point). More general (not just for numeric
 value objects) problem: value objects might need multiply falsy values.<br>
<br>
A grandiose idea, inspired by JMatch 
(<a class="moz-txt-link-freetext" href="http://www.cs.cornell.edu/Projects/jmatch/">http://www.cs.cornell.edu/Projects/jmatch/</a>). Instead of an arbitrary 
hook, support a general linear-algebraic projection function 
(<a class="moz-txt-link-freetext" href="http://en.wikipedia.org/wiki/Projection_%28linear_algebra%29">http://en.wikipedia.org/wiki/Projection_%28linear_algebra%29</a>) by which 
the JS VM can verify that the ToBoolean hook is idempotent (and even 
optimize accordingly if we want to allow that). I doubt this could be 
both expressive and efficient enough but I thought I'd throw it out 
here!<br>
<br>
<span>[pro vs. con analysis, with which I agree, deleted. /be] </span><br>
<br>
<blockquote style="border: 0px none;" 
cite="mid:B2C3FB2A-C599-45CA-9ABC-E1BB63F8CBAF@apple.com" type="cite">
  <div style="color: rgb(136, 136, 136); margin-left: 24px; 
margin-right: 24px;" __pbrmquotes="true" class="__pbConvBody">Note that I
 didn't include compatibility in the Con list - maybe I'm wrong but it 
feels like there ought to be a way of adding an API to register a 
toBoolean hook such that if you don't call the hook you're *guaranteed* 
to get the old behavior.  But this does imply that we use a new hook 
(something like a toBoolean method) rather than saying that ToBoolean 
calls valueOf or toString.</div>
</blockquote>
<br>
Agreed. My value-objects strawman reserves boolean-test as a hook 
available only for novel classes of objects, solving the fairly pressing
 numeric/scicomp/SIMD/etc. use-cases without letting other classes of 
objects sprout such hair.<br>
<br>
<blockquote style="border: 0px none;" 
cite="mid:B2C3FB2A-C599-45CA-9ABC-E1BB63F8CBAF@apple.com" type="cite">
  <div style="color: rgb(136, 136, 136); margin-left: 24px; 
margin-right: 24px;" __pbrmquotes="true" class="__pbConvBody"><div>So, 
sorry to push on this ancient decision - but it really feels like we 
could get a lot of win from reconsidering it.</div></div>
</blockquote>
<br>
No need to apologize -- thanks again for the followup!<br>
<br>
/be</body></html>