<div dir="ltr">OK, now I'm sitting in front of the front end of a computer rather than the back end of a smelly wet large long-haired dog.<div><br></div><div>The restriction on "portable programs" extending (redefining, whatever) MOP functions is here:</div>
<div><br></div><div><a href="http://franz.com/support/documentation/current/doc/mop/concepts.html#portable">http://franz.com/support/documentation/current/doc/mop/concepts.html#portable</a><br></div><div><br></div><div>The motivation for this particular restriction is twofold.</div>
<div><br></div><div>First, the CL language implementation as well as the MOP itself may depend upon the MOP itself.  The intention is that the language and MOP can use CLOS and even the MOP in their own implementation, and if they do, and use only "specified" classes or classes specified on class (and operator) names in private packages or otherwise unexported and unknown to properly-written portable programs, those programs won't break the implementation or affect the efficiency of its implementation.  This is no different than the ANS prohibition against redefining cons to take its arguments in reverse order, expecting that if the portable user application code was written against this specification, the result would be harmless.  But global definitions Lisp worlds are indeed global (*).</div>
<div><br></div><div>The second reason is less obvious.  The implementation of ANS CL, CLOS, and the MOP obviously all depend upon themselves.  Thus their implementations are metacircular and need protection.  Furthermore, the full MOP protocol even where not metaciculr is expensive.  If it must be obeyed for "specified" operators on objects of "specified" classes, execution efficiency may be unacceptable.  The CLOS and MOP subcommittee of X3J13 IMO did an exquisite job making it possible to implement these subspecifications into a usable "industrial-strength language."</div>
<div><br></div><div>The CLOS subcommittee recommended that CLOS, but not MOP, be accepted into the standard, because the MOP had never yet been fully implemented, and was not yet ready for standardization.  That is exactly what we (X3J13) voted.</div>
<div><br></div><div>(*) Back around 1986 just before I intended to reboot my Lisp Machine anyway I redefining car and cdr with the other's definition.  I expected an immediate flaming crash, however, the machine kept running just fine.  This is because the implementation had already compiled all the important functions that called csr and cdr, and those calls obviously would be inlined, making my redefinitions ineffectual.  I'm sure if I had searched for some code that passed #'car or #'cdr as a :key argument to some other function, I might have provoked some failure, but otherwise the machine and OS didn't care.<br>
</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Aug 2, 2014 at 2:59 PM, Kenneth Tilton <span dir="ltr"><<a href="mailto:ken@tiltontec.com" target="_blank">ken@tiltontec.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Note that the MOP is not part of the spec. They explicitly punted on making it so. Ergo, you are likely fishing in unspecified waters, or dog parks as the case may be.<div>
<br></div><div>Note also that no one has asked you what problem you are trying to solve.</div>
<div><br></div><div>Until now.</div><div><br></div><div>hth, hk</div></div><div class="gmail_extra"><div><div class="h5"><br><br><div class="gmail_quote">On Sat, Aug 2, 2014 at 5:26 PM, Attila Lendvai <span dir="ltr"><<a href="mailto:attila.lendvai@gmail.com" target="_blank">attila.lendvai@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>> I got different results in pretty much each CL implementation on the<br>
> tracing of calls to slot-value-using-class.<br>
<br>
</div>make sure you're not using CL:TRACE for this because it may not work<br>
on SVUC due to various optimizations.<br>
<span><font color="#888888"><br>
--<br>
• attila lendvai<br>
• PGP: 963F 5D5F 45C7 DFCD 0A39<br>
--<br>
“A true intellectual is a man who, after reading a book and being<br>
convinced by its arguments, will shoot someone or, more likely, order<br>
someone shot.”<br>
        — John McCarthy<br>
</font></span><div><div><br>
_______________________________________________<br>
pro mailing list<br>
<a href="mailto:pro@common-lisp.net" target="_blank">pro@common-lisp.net</a><br>
<a href="http://common-lisp.net/cgi-bin/mailman/listinfo/pro" target="_blank">http://common-lisp.net/cgi-bin/mailman/listinfo/pro</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div></div></div><div class="">-- <br><div dir="ltr">Kenneth Tilton<div>Fort Lauderdale, FL</div><div><a href="http://tiltontec.com" target="_blank">http://tiltontec.com</a><br>
</div><div>
"In a class by itself." <i>-Macworld</i></div><div><br></div><div><br></div></div>
</div></div>
<br>_______________________________________________<br>
pro mailing list<br>
<a href="mailto:pro@common-lisp.net">pro@common-lisp.net</a><br>
<a href="http://common-lisp.net/cgi-bin/mailman/listinfo/pro" target="_blank">http://common-lisp.net/cgi-bin/mailman/listinfo/pro</a><br>
<br></blockquote></div><br></div>