> That is out of date compared to > > http://www.slideshare.net/BrendanEich/js-resp
Thanks! > specifically slide 15: > > http://image.slidesharecdn.com/jsresp-130914140214-phpapp02/95/slide-15-638.jpg?1379296961 > > which has: > > value class point2d { // implies typeof “point2d” > constructor point2d(x, y) { > this.x = +x; > this.y = +y; > // implicit Object.freeze(this) on return > } > point2d + number (a, b) { > return point2d(a.x + b, a.y + b); > } > number + point2d (a, b) { > return point2d(a + b.x, a + b.y); > } > point2d + point2d (a, b) { > return point2d(a.x + b.x, a.y + b.y); > } > // more operators, suffix declaration handler, etc. > } > > 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. 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: ``` function number + point2d (a, b) { return point2d(a + b.x, a + b.y); } ``` Or, possibly: ``` function + (a :: number, b :: point2d) { return point2d(a + b.x, a + b.y); } ``` Axel -- Dr. Axel Rauschmayer [email protected] home: rauschma.de twitter: twitter.com/rauschma blog: 2ality.com
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

