<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">An excellent question!<div><br></div><div>Coming from Smalltalk, it seemed reasonable and useful for an object to be able to create a store-string for itself at base level.</div><div>For example a point knows about the "@" method, to it's compelling that, as part of its non-meta-level behavior it should know to do</div><div>( <x storeString> ) @ (<y storeString>). The prototype method is needed to implement storeString, since the prototypical point cannot be rebuilt the same way.</div><div>However, I think one could make a good case that the identity of the prototype belongs at the meta-level, so perhaps the prototype methods would have been </div><div>better done that way, with a upshift in the storeString method. Mirrors came after points, so it may have been partly historic.</div><div>printString is another interesting case. Every decision has its plusses and minuses, and Randy presciently saw the drawbacks of introducing</div><div>stratification. However, in my own and many other's opinions, the benefits of stratification greatly outweigh the drawbacks.</div><div>For instance, remote mirrors--outliners on foreign objects--are much easier in a mirror-based system, as are transparent forwarders.</div><div><br></div><div>- David</div><div><br></div><div><br><div><div>On Dec 28, 2010, at 5:21 PM, Jan-Paul Bultmann wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">



<div style="background-color: #fff;">
<span style="display:none"> </span>



    <div id="ygrp-text"><p>Just one more question :)<br>
Why are the storeString:IfFail: and prototype methods in the base domain and not accessible via reflection?<br>
<br>
Cheers Jan, not native speaker btw.<br>
</p>

    </div>
     

    

</div>



<!-- end group email -->

</blockquote></div><br></div></body></html>