> On Oct 17, 2017, at 20:11, Philip McGrath <[email protected]> > wrote: > > It wouldn't solve the problem with shadowing `require`d identifiers, > but would having `#%module-begin` introduce the `require` (with proper > lexical context information), instead of doing it with the reader, > solve at least this part of the problem?
Theoretically, yes. It still doesn’t solve the shadowing problem, but that seems essentially impossible to do in a totally transparent way. The main unfortunate thing, however, is that `#%module-begin` doesn’t know what its module language is. One could theoretically export a different `#%module-begin` from each of hackett/private/kernel, hackett/base, and hackett (the three module languages Hackett provides), each of which introduces a different unhygienic `require`. The downside to this is that a user extending `#lang hackett` to make a new `#lang` would likely reuse Hackett’s `#%module-begin`, and they’d be in for a real surprise when they discovered their types weren’t available in their new `#lang`! (It will also probably do strange things when interacting with module* submodules with #f for the module path, but that can be hacked around — the implementation of namespaces already does plenty of that.) -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

