<div dir="ltr">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.<div><br></div><div>What if a generic point2d + point3d is defined in both point2d class and point3d one ?</div>
<div><br></div><div>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:</div><div>
<a href="http://rgruet.free.fr/PQR26/PQR2.6.html#SpecialMethods">http://rgruet.free.fr/PQR26/PQR2.6.html#SpecialMethods</a><br></div><div><br></div><div>Best Regards</div><div><br></div></div><div class="gmail_extra"><br>
<br><div class="gmail_quote">On Sun, Jan 12, 2014 at 3:45 AM, Axel Rauschmayer <span dir="ltr"><<a href="mailto:axel@rauschma.de" target="_blank">axel@rauschma.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word"><div><div class="im"><blockquote type="cite">That is out of date compared to<br><br><a href="http://www.slideshare.net/BrendanEich/js-resp" target="_blank">http://www.slideshare.net/BrendanEich/js-resp</a><br>
</blockquote><div><br></div></div><div>Thanks!</div><div class="im"><br><blockquote type="cite">specifically slide 15:<br><br><a href="http://image.slidesharecdn.com/jsresp-130914140214-phpapp02/95/slide-15-638.jpg?1379296961" target="_blank">http://image.slidesharecdn.com/jsresp-130914140214-phpapp02/95/slide-15-638.jpg?1379296961</a><br>
<br>which has:<br><br>value class point2d { // implies typeof “point2d”<br>  constructor point2d(x, y) {<br>    this.x = +x;<br>    this.y = +y;<br>    // implicit Object.freeze(this) on return<br>  }<br>  point2d + number (a, b) {<br>
    return point2d(a.x + b, a.y + b);<br>  }<br>  number + point2d (a, b) {<br>    return point2d(a + b.x, a + b.y);<br>  }<br>  point2d + point2d (a, b) {<br>    return point2d(a.x + b.x, a.y + b.y);<br>  }<br>  // more operators, suffix declaration handler, etc.<br>
}<br><br>The idea is to provide convenient declartive syntax for operator multimethods that dispatch along the lines proposed by Christian Hansen. Some work required to handle subclassing, Christian has been helping, writing it up is on my plate for this month.<br>
</blockquote></div></div><div><br></div><div>Nice! Should the operator (case) definitions really be inside the class? E.g., conceptually, number + point2d does not belong to a single class, it belongs to both. Hence, I’d use something more like a (global) function declaration:</div>
<div><br></div><div>```</div><div>    function number + point2d (a, b) {<div class="im"><br>        return point2d(a + b.x, a + b.y);</div></div><div>    }<br></div><div>```</div><div><br></div><div>Or, possibly:</div><div>
<br></div><div><div>```</div><div>    function + (a :: number, b :: point2d) {<div class="im"><br>        return point2d(a + b.x, a + b.y);</div></div><div>    }<br></div><div>```</div></div><div class="im"><div><br></div>
<div>Axel</div><div><br></div><div>
<div><div style="margin:0px">-- </div><div style="margin:0px">Dr. Axel Rauschmayer</div><div style="margin:0px"><a href="mailto:axel@rauschma.de" target="_blank">axel@rauschma.de</a></div><div style="margin:0px"><br></div>
<div style="margin:0px"><div style="margin:0px">home: <a href="http://rauschma.de/" target="_blank">rauschma.de</a></div>twitter: <a href="http://twitter.com/rauschma" target="_blank">twitter.com/rauschma</a></div><div style="margin:0px">
blog: <a href="http://2ality.com/" target="_blank">2ality.com</a></div></div><div><br></div><br>
</div>
<br></div></div><br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>