[racket-dev] RFC: "provide" via mutation

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Mon Jun 21 16:18:59 EDT 2010

On Jun 21, 2010, at 4:10 PM, Sam Tobin-Hochstadt wrote:

> On Mon, Jun 21, 2010 at 4:06 PM, Matthias Felleisen
> <matthias at ccs.neu.edu> wrote:
>> 
>> Stupid me.  REQUIRING is done by DEMAND (as in NEED). So the strange thing is that you gain access to a module local identifier via the store. I still sense something is wrong with the store phases.
> 
> No, that's not right.  `require' is always executed, it's not driven
> by demand.  That's why the `require' of 'm happens, even though
> there's no references to any exports of 'm.  Perhaps what you mean is
> that only modules that are `require'd are invoked in any particular
> store.

Yes. 


> The trick is that the original expansion of 'm is in a
> different store than 'n, which is why the `require' is needed. But the
> store is still the key.

The example suggests the need for a different kind of syntax stepper, one that shows the expanded modules and the process of requiring. 

Posted on the dev mailing list.