I don&#39;t understand Matthias&#39;s performance comments. If, in TR (require plot) actually gives me a typed version of the library and in R (require plot) gives me the untyped version of the library, then I am avoiding the performance the untyped/typed performance overhead properly. If, on the other hand, if I have to commit that (require plot) gives me either the untyped or the typed version, then I have to suffer the performance overhead when I require it from the &quot;wrong&quot; context.<br>
<br>Neil&#39;s original complaint also has validity, I think: if he provides a plot/typed today, and then later ports plot so it is typed, then he has to keep this extra thing around for what appears to not be a very good reason.<br>
<br>And while I do understand Sam&#39;s reluctance to mess with module resolution, I think that just not solving this problem is worse.<br><br>And finally (and perhaps this is the root of the problem), I cannot understand what TR actually does by reading its documentation.<br>
<br>For example, the docs for &#39;require&#39; do not explain why I can make a copy of &quot;list.rkt&quot; (in the racket collection), call the copy &quot;listt.rkt&quot; and have that copy not work, but the original one does. Clearly TR is not just &quot;get[ting] *exactly* the same file as in R&quot;, so I think Sam&#39;s comments are off base.<div>
<br>Robby<br><br>On Mon, Dec 17, 2012 at 2:51 PM, Sam Tobin-Hochstadt &lt;<a href="mailto:samth@ccs.neu.edu">samth@ccs.neu.edu</a>&gt; wrote:<br>&gt;<br>&gt; On Mon, Dec 17, 2012 at 3:27 PM, Robby Findler<br>&gt; &lt;<a href="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>&gt; wrote:<br>
&gt; &gt; I&#39;ve long thought something along these lines is a good idea, but perhaps<br>&gt; &gt; what I think is a good idea isn&#39;t what Matthias and Sam think is the bad<br>&gt; &gt; idea.<br>&gt; &gt;<br>&gt; &gt; I think that it makes sense for &#39;require&#39; in typed-racket to look in a<br>
&gt; &gt; different place than &#39;require&#39; in untyped racket looks so that one can write<br>&gt; &gt; the same require spec (in both the docs and the code) and have two versions<br>&gt; &gt; of the same library, one that is typed and one that isn&#39;t typed. Then, then<br>
&gt; &gt; library writer, if they choose, can decide who pays what for going (or not)<br>&gt; &gt; across the boundary between typed and untyped. (Or maybe submodules would be<br>&gt; &gt; better.)<br>&gt;<br>&gt; I think this is exactly what Eli was suggesting, and what I think is a bad idea.<br>
&gt;<br>&gt; &gt; I think this is already happening in TR anyways, when I write<br>&gt; &gt;<br>&gt; &gt;   (require racket/list)<br>&gt; &gt;<br>&gt; &gt; I don&#39;t get the same file being loaded when that is in a TR program as when<br>
&gt; &gt; it is in a R program.<br>&gt;<br>&gt; You get *exactly* the same file as in R.  I think that (a) this is a<br>&gt; valuable invariant and (b) the mechanisms for violating this invariant<br>&gt; are all very worrying.<br>
&gt;<br>&gt; Sam</div>