Fine. I give up.<div><br></div><div>Robby</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Dec 17, 2012 at 7:55 PM, Sam Tobin-Hochstadt <span dir="ltr">&lt;<a href="mailto:samth@ccs.neu.edu" target="_blank">samth@ccs.neu.edu</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I, perhaps unsurprisingly, disagree. If `listt.rkt` re-provided<br>
everything from `list.rkt`, then it would continue to work.  These<br>
decisions are made entirely on the basis of the particular identifiers<br>
involved -- which module is loaded has nothing to do with it.<br>
<br>
But regardless of exactly how types are declared for the builtin<br>
modules (this could be done with submodules instead, potentially, in<br>
which case the copying would work), right now TR does not translate<br>
requires at all, and I&#39;d like to keep it that way<br>
<br>
On Mon, Dec 17, 2012 at 4:30 PM, Robby Findler<br>
<div class="HOEnZb"><div class="h5">&lt;<a href="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>&gt; wrote:<br>
&gt; For the purposes of this conversation, I don&#39;t think it is fair to stop<br>
&gt; after the comma in your sentence, Eric. :)<br>
&gt;<br>
&gt; Robby<br>
&gt;<br>
&gt;<br>
&gt; On Mon, Dec 17, 2012 at 3:29 PM, Eric Dobson &lt;<a href="mailto:eric.n.dobson@gmail.com">eric.n.dobson@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; It is getting exactly the same file as R, except there is a special file<br>
&gt;&gt; in the TR code that gives types to some bindings (all of the ones from<br>
&gt;&gt; racket). Your new module&#39;s bindings are not in this file.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; <a href="https://github.com/plt/racket/blob/master/collects/typed-racket/base-env/base-env.rkt" target="_blank">https://github.com/plt/racket/blob/master/collects/typed-racket/base-env/base-env.rkt</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Mon, Dec 17, 2012 at 1:16 PM, Robby Findler<br>
&gt;&gt; &lt;<a href="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I don&#39;t understand Matthias&#39;s performance comments. If, in TR (require<br>
&gt;&gt;&gt; plot) actually gives me a typed version of the library and in R (require<br>
&gt;&gt;&gt; plot) gives me the untyped version of the library, then I am avoiding the<br>
&gt;&gt;&gt; performance the untyped/typed performance overhead properly. If, on the<br>
&gt;&gt;&gt; other hand, if I have to commit that (require plot) gives me either the<br>
&gt;&gt;&gt; untyped or the typed version, then I have to suffer the performance overhead<br>
&gt;&gt;&gt; when I require it from the &quot;wrong&quot; context.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Neil&#39;s original complaint also has validity, I think: if he provides a<br>
&gt;&gt;&gt; plot/typed today, and then later ports plot so it is typed, then he has to<br>
&gt;&gt;&gt; keep this extra thing around for what appears to not be a very good reason.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; And while I do understand Sam&#39;s reluctance to mess with module<br>
&gt;&gt;&gt; resolution, I think that just not solving this problem is worse.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; And finally (and perhaps this is the root of the problem), I cannot<br>
&gt;&gt;&gt; understand what TR actually does by reading its documentation.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; For example, the docs for &#39;require&#39; do not explain why I can make a copy<br>
&gt;&gt;&gt; of &quot;list.rkt&quot; (in the racket collection), call the copy &quot;listt.rkt&quot; and have<br>
&gt;&gt;&gt; that copy not work, but the original one does. Clearly TR is not just<br>
&gt;&gt;&gt; &quot;get[ting] *exactly* the same file as in R&quot;, so I think Sam&#39;s comments are<br>
&gt;&gt;&gt; off base.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Robby<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; 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;<br>
&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; On Mon, Dec 17, 2012 at 3:27 PM, Robby Findler<br>
&gt;&gt;&gt; &gt; &lt;<a href="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>&gt; wrote:<br>
&gt;&gt;&gt; &gt; &gt; I&#39;ve long thought something along these lines is a good idea, but<br>
&gt;&gt;&gt; &gt; &gt; perhaps<br>
&gt;&gt;&gt; &gt; &gt; what I think is a good idea isn&#39;t what Matthias and Sam think is the<br>
&gt;&gt;&gt; &gt; &gt; bad<br>
&gt;&gt;&gt; &gt; &gt; idea.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; I think that it makes sense for &#39;require&#39; in typed-racket to look in<br>
&gt;&gt;&gt; &gt; &gt; a<br>
&gt;&gt;&gt; &gt; &gt; different place than &#39;require&#39; in untyped racket looks so that one<br>
&gt;&gt;&gt; &gt; &gt; can write<br>
&gt;&gt;&gt; &gt; &gt; the same require spec (in both the docs and the code) and have two<br>
&gt;&gt;&gt; &gt; &gt; versions<br>
&gt;&gt;&gt; &gt; &gt; of the same library, one that is typed and one that isn&#39;t typed.<br>
&gt;&gt;&gt; &gt; &gt; Then, then<br>
&gt;&gt;&gt; &gt; &gt; library writer, if they choose, can decide who pays what for going<br>
&gt;&gt;&gt; &gt; &gt; (or not)<br>
&gt;&gt;&gt; &gt; &gt; across the boundary between typed and untyped. (Or maybe submodules<br>
&gt;&gt;&gt; &gt; &gt; would be<br>
&gt;&gt;&gt; &gt; &gt; better.)<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; I think this is exactly what Eli was suggesting, and what I think is a<br>
&gt;&gt;&gt; &gt; bad idea.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; I think this is already happening in TR anyways, when I write<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;   (require racket/list)<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; I don&#39;t get the same file being loaded when that is in a TR program<br>
&gt;&gt;&gt; &gt; &gt; as when<br>
&gt;&gt;&gt; &gt; &gt; it is in a R program.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; You get *exactly* the same file as in R.  I think that (a) this is a<br>
&gt;&gt;&gt; &gt; valuable invariant and (b) the mechanisms for violating this invariant<br>
&gt;&gt;&gt; &gt; are all very worrying.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Sam<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _________________________<br>
&gt;&gt;&gt;   Racket Developers list:<br>
&gt;&gt;&gt;   <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
</div></div></blockquote></div><br></div>