<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br></div><div>My understanding is that </div><div><br></div><div> -- Neil created a single file P, I believe it is typed </div><div> -- he tells you to load plot/typed/ for the typed version </div><div> -- he tells you to load plot/ for the untyped version </div><div><br></div><div>Somewhere in this arrangement a call in some untyped client to a function f from P will cross a line. </div><div><br></div><div>If this is wrong, I'd like to know where it goes wrong. </div><div><br></div><div>---------------------------------------------</div><div><br></div><div>I like the submodule idea a lot. </div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><br><div><div>On Dec 17, 2012, at 4:16 PM, Robby Findler wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">I don't understand Matthias'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 "wrong" context.<br>
<br>Neil'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'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 'require' do not explain why I can make a copy of "list.rkt" (in the racket collection), call the copy "listt.rkt" and have that copy not work, but the original one does. Clearly TR is not just "get[ting] *exactly* the same file as in R", so I think Sam's comments are off base.<div>
<br>Robby<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>> 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 perhaps<br>> > what I think is a good idea isn't what Matthias and Sam think is the bad<br>> > idea.<br>> ><br>> > I think that it makes sense for 'require' in typed-racket to look in a<br>
> > different place than 'require' in untyped racket looks so that one can write<br>> > the same require spec (in both the docs and the code) and have two versions<br>> > of the same library, one that is typed and one that isn't typed. Then, then<br>
> > library writer, if they choose, can decide who pays what for going (or not)<br>> > across the boundary between typed and untyped. (Or maybe submodules would be<br>> > better.)<br>><br>> I think this is exactly what Eli was suggesting, and what I think is a 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 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</div>
_________________________<br> Racket Developers list:<br> <a href="http://lists.racket-lang.org/dev">http://lists.racket-lang.org/dev</a><br></blockquote></div><br></body></html>