<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"><base href="x-msg://5049/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I disagree. M3CG.T is more abstract than M3CG_Ops. The revelation of M3CG.T <: M3CG_Ops.Public is in M3CG_Ops. If you want the ops you simply import that interface to get the revelation. Please don’t make pervasive changes in interfaces that some of us are developing against.<br>
<br><div><div>On Sep 26, 2012, at 4:11 AM, Jay K <<a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div class="hmmessage" style="font-size: 12pt; font-family: Calibri; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div dir="ltr"><div><font face="Calibri, sans-serif">M3CG_Ops.i3:</font></div><div><font face="Calibri, sans-serif"><br></font></div><div><font face="Calibri, sans-serif"><br></font></div><div><font face="Calibri, sans-serif">child: M3CG.T := NIL;</font></div><div><font face="Calibri, sans-serif">(* The default methods simply call the corresponding method in 'child',</font></div><div><font face="Calibri, sans-serif"> hence a vanilla 'M3CG.T' can be used as a filter where you override</font></div><div><font face="Calibri, sans-serif"> only the methods of interest. *)</font></div><div><font face="Calibri, sans-serif"><br></font></div><div><font face="Calibri, sans-serif">1)</font></div><div><font face="Calibri, sans-serif"><br></font></div><div><font face="Calibri, sans-serif">I am not keen on fixing this, but I feel this was clearly a mistake.</font></div><div><font face="Calibri, sans-serif"><br></font></div><div><font face="Calibri, sans-serif">M3CG_Ops.Public should have been "purely abstract" with no default</font></div><div><font face="Calibri, sans-serif">implementation.</font></div><div><font face="Calibri, sans-serif">M3CG_Filter.T or somesuch could have been as described.</font></div><div><font face="Calibri, sans-serif"><br></font></div><div><font face="Calibri, sans-serif"><br></font></div><div><font face="Calibri, sans-serif">2) I am fixing:</font></div><div><font face="Calibri, sans-serif">M3CG.T is overused.</font></div><div><font face="Calibri, sans-serif">Most uses should be M3CG_Ops.Public.</font></div><div><font face="Calibri, sans-serif">It is ok to derive from -- though that was a mistake.</font></div><div><font face="Calibri, sans-serif">But functions that take or return M3CG.T should really be</font></div><div><font face="Calibri, sans-serif">taking and returning M3CG_Ops.Public.</font></div><div><font face="Calibri, sans-serif"><br></font></div><div><font face="Calibri, sans-serif"><br></font></div><div><font face="Calibri, sans-serif"> - Jay</font></div><br></div></div><br class="Apple-interchange-newline"></blockquote></div><br></body></html>