[Bug 1705] [FS] technical: 5.2 Module Declaration: cyclical imports


------- Comment #38 from simeon@us.ibm.com  2006-11-08 00:53 -------
Hi Michael,
Yes I think your comment and suggestions totally make sense there. I think
that's more or less what I had in mind.
Thanks for the suggestions. I do believe that addresses your earlier problem in
#28. Please let me know asap if you still see other issues as I am trying to
produce a new version of the document as we speak.
- Jerome

(In reply to comment #36)
> You can break the M-N-L cycle by adding to 5.11 the "AnyURI0 != AnyURI1" etc.
> machinery from Comment #23. But then you have the problem I raised in Comment
> #28: the presence or absence of a self-import in a module has no effect on the
> statEnv that its expressions "see". However, I think you can fix that...
> You say "There should be some changes to the =>stat judgment so that it passes
> only the relevant part of the static environment between modules." One way to
> do this would be to remix some more stuff from Comment #28. Make the =>stat
> judgment be:
>     statEnv_N_in ; statEnv_E_in ; AnyURI |- PrologDeclList_in
>     =>stat
>     statEnv_N_out ; statEnv_E_out with PrologDeclList_out
> statEnv_N is the "normal" statEnv, used for all the usual purposes.
> statEnv_E is the "export" statEnv, containing (conceptually) the funcType and
> varType of the current module's "siblings". (In reality, it doesn't contain
> entries for *all* the functions and variables of a module's siblings, but it
> does contain all the ones that the module depends on, which is what matters.)
> The big =>module_statEnv rule in 5.2 would say:
>     ...
>     statEnvDefault |- PrologDecls gather function signatures statEnv_E_0
>     statEnvDefault ; statEnv_E_0 ; AnyURI |- ...1
>         =>stat
>         statEnv_1 ; statEnv_E_1 with PrologDeclList1'
>     ...
>     statEnvDefault ; statEnv_E_[n-1] ; AnyURI |- ...n
>         =>stat
>         statEnv_n ; statEnv_E_n with PrologDeclListn'
>     --------
>     AnyURI =>module_statEnv statEnvn_E_n
> (Note that all modules start out with just statEnvDefault as their "normal"
> statEnv.)
> So that would take care of initializing the export-env and propagating it
> between sibling modules (and propagating it out to whatever called
> =>module_statEnv). =>stat would only update it for var decls (also updating the
> normal statEnv), and would only consult it for self-imports ("AnyURI0 =
> AnyURI1"), copying its var + func info into statEnv_N_out.

Received on Wednesday, 8 November 2006 00:54:00 UTC