[racket-dev] Typed versions of untyped collections
At Mon, 17 Dec 2012 15:51:38 -0500, Sam Tobin-Hochstadt wrote:
> On Mon, Dec 17, 2012 at 3:27 PM, Robby Findler
> <robby at eecs.northwestern.edu> wrote:
> > I've long thought something along these lines is a good idea, but perhaps
> > what I think is a good idea isn't what Matthias and Sam think is the bad
> > idea.
> >
> > I think that it makes sense for 'require' in typed-racket to look in a
> > different place than 'require' in untyped racket looks so that one can write
> > the same require spec (in both the docs and the code) and have two versions
> > of the same library, one that is typed and one that isn't typed. Then, then
> > library writer, if they choose, can decide who pays what for going (or not)
> > across the boundary between typed and untyped. (Or maybe submodules would be
> > better.)
>
> I think this is exactly what Eli was suggesting, and what I think is a bad idea.
>
> > I think this is already happening in TR anyways, when I write
> >
> > (require racket/list)
> >
> > I don't get the same file being loaded when that is in a TR program as when
> > it is in a R program.
>
> You get *exactly* the same file as in R. I think that (a) this is a
> valuable invariant and (b) the mechanisms for violating this invariant
> are all very worrying.
FWIW, our current module-loading infrastructure is better adapted to a
search for `(submod typed racket/list)' in place of `racket/list',
instead of `racket/list/typed'. That is, submodule paths are intended
to play nicer with a search, and that intent is encoded in rules for
layers of module and load handlers.
(I don't know whether the search is a good idea.)