1. At some point, we had a macro that opened up modules and made all 
module-level identifiers available. Wouldn't a flavor of this macro work here 
and, if so, wouldn't it be cheaper? Or is this what you call dumpster-diving, 
traversing the expansion and extracting ids from there? 

2. Is it possible that we could solve the problem via a bootstrapping-only 
violation of our policy that you can add types to Racket w/o modifying existing 
modules? 








On May 23, 2013, at 9:22 AM, Sam Tobin-Hochstadt <sa...@ccs.neu.edu> wrote:

> On Thu, May 23, 2013 at 1:54 PM, Matthias Felleisen
> <matth...@ccs.neu.edu> wrote:
>> Can you raise the level of discourse one level and perhaps figure out 
>> whether this is needed at all? I.e., find a different way to solve the 
>> problem? (What is the real problem?)
> 
> This is important, and it's the second implementation of this feature.
> The previous one was substantially more painful, and involved
> local-expand and "dumpster-diving".
> 
> The reason we need a tool like this is that the expansion of some
> macros (examples include `for`, `delay`, `quasiquote`, among others)
> have runtime support functions that are not exported. Typed Racket
> needs to specify the type of these operations.  You can see these
> specifications here:
> https://github.com/plt/racket/blob/master/collects/typed-racket/base-env/base-special-env.rkt
> . That means that it needs to construct those identifiers, although it
> never needs to execute code with those identifiers.
> 
> The previous implementation was much slower here, remarkably.
> 
> Sam


_________________________
  Racket Developers list:
  http://lists.racket-lang.org/dev

Reply via email to