<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On 8 Feb 2015, at 14:10, Kim Bruce <<a href="mailto:kim@cs.pomona.edu">kim@cs.pomona.edu</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=utf-8"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Andrew,<div class=""><br class=""></div><div class="">Does something like Java 8’s default methods (methods added to a type rather than an implementation — and not allowed to refer to instance variables) satisfy your needs for extensible primitive types?</div><div class=""><br class=""></div><div class=""><font color="#4787ff" class=""><u class=""><a href="http://zeroturnaround.com/rebellabs/java-8-explained-default-methods/" class="">http://zeroturnaround.com/rebellabs/java-8-explained-default-methods/</a></u></font></div><div class=""><font color="#4787ff" class=""><u class=""><br class=""></u></font></div></div></blockquote><br></div><div>I see default methods as one more patch made to cover-up a bad design decision made in 1994. </div><div><br></div><div>Like James said, I don’t see how they would work with implicit typing.  In Java, when you say that an object satisfies and interface, it gets the additional methods, which must (presumably) be implemented in terms of the remainder of the interface.  We never say explicitly that an object satisfies an interface.</div><div><br></div><div>I suppose that when Grace gets a “no-such-method” error on a receiver r, it could look at a list of default methods and see is there is one with the right name, and then see if its required methods are supplied by r — or by other dealt methods on r, recursively.   This seems really arcane.</div><div><br></div><div>The right thing is to simply give the receiver the right method in the first place.  And that’s pretty easy to do, I think.</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Andrew</div><div><br></div><br></body></html>