On Mon, Jun 21, 2010 at 4:06 PM, Matthias Felleisen
<matth...@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. 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.

> On Jun 21, 2010, at 4:01 PM, Sam Tobin-Hochstadt wrote:
>
>> On Mon, Jun 21, 2010 at 3:58 PM, Matthias Felleisen
>> <matth...@ccs.neu.edu> wrote:
>>>
>>> I still don't understand how the #'x reference is actually exported from m 
>>> to n. I understand the store part but why is the for-value require of 'm 
>>> needed? If you remove it you get a type-checking error (add1 applied to 
>>> False).
>>
>> If you don't have the `require' of 'm, then the box is never mutated
>> in the store of the expansion time of 'n, leaving it with the initial
>> value #f. The `begin-for-syntax' in 'm is what does the exporting, by
>> mutating the shared box.
>> --
>> sam th
>> sa...@ccs.neu.edu
>
>



-- 
sam th
sa...@ccs.neu.edu
_________________________________________________
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Reply via email to