<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div>Andy<br><br>yes I was referring to the circular dependency issue.<br>Catch-alls would be useful for this, though it would be nice if <br>they were automated, eg returning a proxy until the module was used.<br>Doing it manually by developer would be too difficult.<br>I realize modules are intended to just satisfy a function body and <br>can be initialized as objects or called as functions, but since they <br>have strong container semantics I wonder if they should <br>have more than just an 'id' especially if they provide a gateway <br>to what else is in the directory as in commonjs.<br><br>Kam<br></div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br><div style="font-family: arial,helvetica,sans-serif; font-size: 13px;"><font face="Tahoma" size="2"><hr
 size="1"><b><span style="font-weight: bold;">From:</span></b> Andy Chu &lt;andy@chubot.org&gt;<br><b><span style="font-weight: bold;">To:</span></b> Kam Kasravi &lt;kamkasravi@yahoo.com&gt;<br><b><span style="font-weight: bold;">Cc:</span></b> Brendan Eich &lt;brendan@mozilla.com&gt;; kkasravi &lt;kkasravi@me.com&gt;; es-discuss &lt;es-discuss@mozilla.org&gt;<br><b><span style="font-weight: bold;">Sent:</span></b> Mon, January 18, 2010 12:40:35 PM<br><b><span style="font-weight: bold;">Subject:</span></b> Re: Module system strawpersons<br></font><br>
On Mon, Jan 18, 2010 at 10:29 AM, Kam Kasravi &lt;<a ymailto="mailto:kamkasravi@yahoo.com" href="mailto:kamkasravi@yahoo.com">kamkasravi@yahoo.com</a>&gt; wrote:<br>&gt; Yes, that looks right, I also remember a reference to the 'dot' notation<br>&gt; where namespace<br>&gt; access would be arbitrated implicitly by objects representing the '.' It may<br>&gt; have been in<br>&gt; one of Lars Hansen papers on gradual typing. In any case there was some good<br>&gt; discussion<br>&gt; on meta-level objects and controlling capabilities or access.<br>&gt;<br>&gt; Was there any discussion in the past about parameterized modules or<br>&gt; units where recursively nested modules/units were brought up? If two modules<br>&gt; refer to each other<br>&gt; and all imports are resolved eagerly then I think this would be a problem<br>&gt; where use cases would<br>&gt; abound.<br><br>What are you referring to here?&nbsp; I think you are hinting at the<br>problem of
 circular dependencies using "import" semantics like Python<br>and CommonJS.&nbsp; Right now if you have mutually recursive modules, you<br>get partially initialized modules, because the "program counter" just<br>follows every require().&nbsp; The CommonJS spec specifically allows the<br>partially initialized modules I think.<br><br>Personally I try to break up circular dependencies, but this behavior<br>is not very friendly, so I think it would be better if Harmony<br>supported circular dependencies in a more "correct" way.&nbsp; So this is<br>an advantage of the "makers" style semantics (separating module<br>definition and configuration).<br><br>The Newspeak paper talks explicitly about this:<br><span><a target="_blank"
 href="http://scholar.google.com/scholar?hl=en&amp;source=hp&amp;q=objects%20as%20modules%20in%20newspeak&amp;um=1&amp;ie=UTF-8&amp;sa=N&amp;tab=ws">http://scholar.google.com/scholar?hl=en&amp;source=hp&amp;q=objects%20as%20modules%20in%20newspeak&amp;um=1&amp;ie=UTF-8&amp;sa=N&amp;tab=ws</a></span><br><br>If you are initializing modules in topological order, and there is a<br>circular dependency between A and B, he says to just make a dummy<br>proxy object for B to pass into A, initialize A, and then initialize<br>B.<br><br>That also reminds me that a good use case for catchalls is making<br>module-like objects.&nbsp; I haven't seen any discussions of the 2 together<br>but it's definitely worth thinking about how they interact.<br><br>Andy<br></div></div>
<!-- cg7.c4.mail.gq1.yahoo.com compressed/chunked Fri Jan 15 19:11:03 PST 2010 -->
</div></body></html>