<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I thought that It could be used to have (a sort of) multiple interfaces, grouping all the methods as abstract in the the base record and selecting only those that are needed in later extensions.<br>
<br>
For example a Stream class may have all the (stream related) methods as abstract, while non-buffered extensions redefine flush() as EMPTY.<br>
However not all streams have positioning, but I can't redefine tell() as EMPTY since it returns something.<br>
<br>
So it looked like rather limiting.<br>
<br>
--<br>
Diego Sardina<br>
<br></blockquote><div><br></div><div> </div><div>I think of EMPTY as a short-hand notation for BEGIN END ProcName;<br></div><div>In principle, it would allow the compiler to save a few bytes and use a generic stub for the return code,</div><div>but only if such a generic stub is possible on a particular target platform.</div><div>This depends on the details of managing the run-time stack.</div><div>The i386 code generator is not using a generic sub.</div><div><br></div><div>In addition, the compiler puts a flag into the symbol file that marks an exported EMPTY procedure.</div><div>This is used for checking if a super call to an EMPTY procedure is made. Super calls are not </div><div>allowed for EMPTY procedures. I am not sure why. It may be because it does not give sense to</div><div>call something that does nothing by definition. But this is disputable, I think. It breaks the abstraction</div><div>in the sense that it tells you something about the (missing) implementation of a procedure.</div><div><br></div><div>In general, I am not aware of any other
<span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">major OOP language that has a similar concept.</span></div><div>It does not seem to be very important, and, yes, it is rather limited.</div><div><br></div><div>- Josef</div></div></div></div>