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"><<a href="mailto:samth@ccs.neu.edu" target="_blank">samth@ccs.neu.edu</a>></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'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"><<a href="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>> wrote:<br>
> For the purposes of this conversation, I don't think it is fair to stop<br>
> after the comma in your sentence, Eric. :)<br>
><br>
> Robby<br>
><br>
><br>
> On Mon, Dec 17, 2012 at 3:29 PM, Eric Dobson <<a href="mailto:eric.n.dobson@gmail.com">eric.n.dobson@gmail.com</a>><br>
> wrote:<br>
>><br>
>> It is getting exactly the same file as R, except there is a special file<br>
>> in the TR code that gives types to some bindings (all of the ones from<br>
>> racket). Your new module's bindings are not in this file.<br>
>><br>
>><br>
>> <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>
>><br>
>><br>
>> On Mon, Dec 17, 2012 at 1:16 PM, Robby Findler<br>
>> <<a href="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>> wrote:<br>
>>><br>
>>> I don't understand Matthias's performance comments. If, in TR (require<br>
>>> plot) actually gives me a typed version of the library and in R (require<br>
>>> plot) gives me the untyped version of the library, then I am avoiding the<br>
>>> performance the untyped/typed performance overhead properly. If, on the<br>
>>> other hand, if I have to commit that (require plot) gives me either the<br>
>>> untyped or the typed version, then I have to suffer the performance overhead<br>
>>> when I require it from the "wrong" context.<br>
>>><br>
>>> Neil's original complaint also has validity, I think: if he provides a<br>
>>> plot/typed today, and then later ports plot so it is typed, then he has to<br>
>>> keep this extra thing around for what appears to not be a very good reason.<br>
>>><br>
>>> And while I do understand Sam's reluctance to mess with module<br>
>>> 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<br>
>>> understand what TR actually does by reading its documentation.<br>
>>><br>
>>> For example, the docs for 'require' do not explain why I can make a copy<br>
>>> of "list.rkt" (in the racket collection), call the copy "listt.rkt" and have<br>
>>> that copy not work, but the original one does. Clearly TR is not just<br>
>>> "get[ting] *exactly* the same file as in R", so I think Sam's comments are<br>
>>> off base.<br>
>>><br>
>>> Robby<br>
>>><br>
>>><br>
>>> On Mon, Dec 17, 2012 at 2:51 PM, Sam Tobin-Hochstadt <<a href="mailto:samth@ccs.neu.edu">samth@ccs.neu.edu</a>><br>
>>> wrote:<br>
>>> ><br>
>>> > On Mon, Dec 17, 2012 at 3:27 PM, Robby Findler<br>
>>> > <<a href="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>> wrote:<br>
>>> > > I've long thought something along these lines is a good idea, but<br>
>>> > > perhaps<br>
>>> > > what I think is a good idea isn't what Matthias and Sam think is the<br>
>>> > > bad<br>
>>> > > idea.<br>
>>> > ><br>
>>> > > I think that it makes sense for 'require' in typed-racket to look in<br>
>>> > > a<br>
>>> > > different place than 'require' in untyped racket looks so that one<br>
>>> > > can write<br>
>>> > > the same require spec (in both the docs and the code) and have two<br>
>>> > > versions<br>
>>> > > of the same library, one that is typed and one that isn't typed.<br>
>>> > > Then, then<br>
>>> > > library writer, if they choose, can decide who pays what for going<br>
>>> > > (or not)<br>
>>> > > across the boundary between typed and untyped. (Or maybe submodules<br>
>>> > > would be<br>
>>> > > better.)<br>
>>> ><br>
>>> > I think this is exactly what Eli was suggesting, and what I think is a<br>
>>> > bad idea.<br>
>>> ><br>
>>> > > I think this is already happening in TR anyways, when I write<br>
>>> > ><br>
>>> > > (require racket/list)<br>
>>> > ><br>
>>> > > I don't get the same file being loaded when that is in a TR program<br>
>>> > > as when<br>
>>> > > it is in a R program.<br>
>>> ><br>
>>> > You get *exactly* the same file as in R. I think that (a) this is a<br>
>>> > valuable invariant and (b) the mechanisms for violating this invariant<br>
>>> > are all very worrying.<br>
>>> ><br>
>>> > Sam<br>
>>><br>
>>> _________________________<br>
>>> Racket Developers list:<br>
>>> <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
>>><br>
>><br>
><br>
</div></div></blockquote></div><br></div>