<div dir="ltr">recap ... <div><br></div><div>in class point3d</div><div><div style="font-family:arial,sans-serif;font-size:13px">```javascript</div><div style="font-family:arial,sans-serif;font-size:13px"><span style="color:rgb(80,0,80)">   function + (a :: point2d, b :: point3d) {</span><br style="color:rgb(80,0,80)">
<span style="color:rgb(80,0,80)">        return point3d(a.x + b.x, a.y + b.y, b.z);</span><br style="color:rgb(80,0,80)"><span style="color:rgb(80,0,80)">    }</span><br></div><div style="font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(80,0,80)">```</span></div></div><div style="font-family:arial,sans-serif;font-size:13px"><span style="color:rgb(80,0,80)"><br></span></div><div style="font-family:arial,sans-serif;font-size:13px"><div style="font-family:arial;font-size:small">
in class point2d</div><div style="font-family:arial;font-size:small"><div style="font-family:arial,sans-serif;font-size:13px">```javascript</div><div style="font-family:arial,sans-serif;font-size:13px"><span style="color:rgb(80,0,80)">   function + (a :: point2d, b :: point3d) {</span><br style="color:rgb(80,0,80)">
<span style="color:rgb(80,0,80)">        return point2d(a.x + b.x, a.y + b.y); // ignore b.z</span></div><div style="font-family:arial,sans-serif;font-size:13px">        // or do something else with z<br style="color:rgb(80,0,80)">
<span style="color:rgb(80,0,80)">    }</span><br></div><div style="font-family:arial,sans-serif;font-size:13px"><span style="color:rgb(80,0,80)">```</span></div></div></div><div style="font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(80,0,80)"><br></span></div><div style="font-family:arial,sans-serif;font-size:13px"><font color="#500050">which one would be the result and why? what if both defines a and b arguments differently too ?</font></div>
<div style="font-family:arial,sans-serif;font-size:13px"><font color="#500050"><br></font></div><div style="font-family:arial,sans-serif;font-size:13px"><font color="#500050">Thanks for clarifications</font></div><div style="font-family:arial,sans-serif;font-size:13px">
<span style="color:rgb(80,0,80)"><br></span></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Jan 12, 2014 at 6:42 PM, Andrea Giammarchi <span dir="ltr"><<a href="mailto:andrea.giammarchi@gmail.com" target="_blank">andrea.giammarchi@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">not sure I understand that ... what if both point2d and point3d specify the `+` ? is that possible ?<div>
<br></div><div>talking about</div><div><br></div><div>```javascript</div><div><span style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px">   function + (a :: point2d, b :: point3d) {</span><br style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px">

<span style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px">        return point3d(a.x + b.x, a.y + b.y, b.z);</span><br style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px"><span style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px">    }</span><br>

</div><div><span style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px">```</span></div><div><span style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px">specified differently in both point2d and point3d classes</span></div>

<div><span style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px"><br>

</span></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Jan 12, 2014 at 6:21 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>Andrea Giammarchi wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I had same thoughts on being defined inside the class ... it's quite common out there but here I see it's very easy to create conflicts between classes.<br>
<br>
What if a generic point2d + point3d is defined in both point2d class and point3d one ?<br>
</blockquote>
<br></div>
The definitions need to be special forms, associated with one (if unary operator) or two value classes -- if you include number as a value class. Also, the value class declaration being memoized allows cross-frame typeof equivalence for free. I forgot to mention this in my last reply.<div>

<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
IIRC Python just consider it's own representation during one operation, not associating it with "the caller" of such operation ... actually, I've always been envious of these:<br>
<a href="http://rgruet.free.fr/PQR26/PQR2.6.html#SpecialMethods" target="_blank">http://rgruet.free.fr/PQR26/<u></u>PQR2.6.html#SpecialMethods</a><br>
</blockquote>
<br></div>
Value objects do not use double dispatch for dyadic operators, though.<span><font color="#888888"><br>
<br>
/be<br>
</font></span></blockquote></div><br></div>
</div></div></blockquote></div><br></div>