<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Jun 27, 2014 at 3:17 PM, Andreas Rossberg <span dir="ltr"><<a href="mailto:rossberg@google.com" target="_blank">rossberg@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">I think you are missing the central problem. If imports/exports are to<br></div>
be statically checked, then module bindings, their exports, and their<br>
uses have to be statically recognisable and analysable. That prohibits<br>
intermixing "proper" modules with other random objects.</blockquote><div><br></div><div>No, it means that your checker will only work with 'proper' modules.  The linter can easily have a white/blacklist to handle oddball cases.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">You argue that throwing out checking is fine, i.e., you are arguing<br></div>
for the second goal, and against the first. But others disagree.<br></blockquote><div><br></div><div>No.  I believe that *allowing the user (or module author) to selectively ignore* the checking (for example, by using a default import of an object which is not a module).  You seem to be missing my fundamental point: this is not a dichotomy.  You can check many imports, even if you can't check all.  If the module author chooses to export a function instead of an object, you can't check the imports of *that one module*.  Use a different module if that bothers you!</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="">No, the importers have no choice, they have to go with whatever the<br></div>
module provider picked.</blockquote><div><br></div><div>The importers have the choice to use a different module (or fork the module, or use a transpiler, or...).</div><div><br></div><div>The module author has the choice to re/structure his module to allow lazy binding/checking *iff the users demand*.</div>
<div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The hybrid, best of both worlds approach you seem to<br>
have in mind is technically impossible, unfortunately.<br></blockquote><div><br></div><div>I look forward to a technical proof then.  You have not yet provided that.</div><div> --scott</div><div><br></div></div></div></div>