<br><br><div class="gmail_quote">On Mon, Jan 18, 2010 at 10:25 AM, Brendan Eich <span dir="ltr">&lt;<a href="mailto:brendan@mozilla.com">brendan@mozilla.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div style="word-wrap:break-word"><div><div class="im"><div>On Jan 18, 2010, at 10:20 AM, Mark S. Miller wrote:</div><br><blockquote type="cite">I simply don&#39;t understand what you mean by the phrase &quot;migrate into a module&quot;. What does this mean?<br>
</blockquote><div><br></div></div>Use on the inside of a module. I have code I want to put in a module. It uses Prototype. That&#39;s all.</div><div><br></div></div></blockquote><div>How would you express &quot;putting code in a module&quot;? I just don&#39;t have a concrete idea what you mean. Could you show a program fragment?</div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="word-wrap:break-word"><div></div><div>Why is this hard to understand? Are you assuming modules are small, </div>
</div></blockquote><div><br></div><div>Or at least, that module boundaries coincide with boundaries between separately written source files, as is the case with module systems I&#39;m familiar with from other languages. For example, Java classes-as-modules.</div>
<div><br></div><div><div> </div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
<div style="word-wrap: break-word; "><div>and/or consisting of new code only?</div><div><br></div></div></blockquote><div>Or at least a new revision of old code, in order to repackage the code to do module-based import/export linkage, rather than the current practice of implicit linkage through shared global variables.</div>
<div> </div><div>Since I do not yet understand what you are trying to say, I may be the wrong person to guess why I&#39;m finding it hard to understand ;). Altogether, my best guess right now is that what you are calling a module is what I would call a sandbox. </div>
</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="word-wrap:break-word"><div></div><font color="#888888"><div>/be</div></font><div><div></div>
<div class="h5"><div><br><blockquote type="cite"><br><div class="gmail_quote">On Mon, Jan 18, 2010 at 10:13 AM, Brendan Eich <span dir="ltr">&lt;<a href="mailto:brendan@mozilla.com" target="_blank">brendan@mozilla.com</a>&gt;</span> wrote:<br>
 <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>On Jan 18, 2010, at 9:57 AM, Mark S. Miller wrote:<br> <br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 No, I wrote &quot;migrate into a module&quot; meaning be part of the inside of a module -- not be packaged as a module.<br> <br> I don&#39;t get it. What do you have in mind?<br> </blockquote> <br></div> What&#39;s not to get? If you use Prototype inside a module, it will mutate &quot;the primordials&quot; -- whatever ones it finds on the global at the end of its scope chain. If those primordials are frozen, game over.<br>
 <br> Tons of JS on the web mutates primordials, e.g.:<br> <br> <a href="http://www.google.com/codesearch?as_q=Array.prototype" target="_blank">http://www.google.com/codesearch?as_q=Array.prototype</a>.\w%2B+%3D+&amp;btnG=Search+Code&amp;hl=en&amp;as_lang=javascript&amp;as_license_restrict=i&amp;as_license=&amp;as_package=&amp;as_filename=&amp;as_case=<br>
 <a href="http://www.google.com/codesearch?hl=en&amp;lr=&amp;q=%22extend%28Array.prototype%22&amp;sbtn=Search" target="_blank">http://www.google.com/codesearch?hl=en&amp;lr=&amp;q=%22extend%28Array.prototype%22&amp;sbtn=Search</a><br>
 <br> For any such code to move into a module, that code wants mutable primordials. For isolation these would be per-module, and to avoid problems exporting functions, some kind of membrane to support virtualized mutation or throw on mutation attempt would be required around any exposed objects that lead back to in-module prototypes.<br>
 <br> Or we could say &quot;rewrite all your code&quot; or &quot;forget it&quot;. But that is not a given.<br><font color="#888888"> <br> /be<br> <br> </font></blockquote></div><br><br clear="all"><br>-- <br>    Cheers,<br>
    --MarkM<br></blockquote></div><br></div></div></div></blockquote></div><br><br clear="all"><br>-- <br>    Cheers,<br>    --MarkM<br>