Delay in $Context changes taking effect?
- To: mathgroup at smc.vnet.net
- Subject: [mg30006] Delay in $Context changes taking effect?
- From: "Michael" <michael at science.edu>
- Date: Sat, 21 Jul 2001 00:49:13 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
I am trying to use the $Pre and $Post functions to alter the context for variables, so that each notebook has its own set of local variables. However my attempts have not succeeded. I think that $Context is supposed to be the default context new variables are created in, and $ContextPath the paths to search for existing variables in. After a lot of research, it appears that the problem is that changes to $Context and $ContextPath do not take effect until after the current line of input in a notebook is processed. To illustrate, if I put a BeginPackage on a separate line from the assignment, the newly created variable is created in the expected context. In[1]:= Remove[f, Test`f] In[2]:= BeginPackage["Test`"]; f = 1; EndPackage[]; In[3]:= Context[f] Out[44]= "Test`" However, if the BeginPackage is on the same line, or in a CompoundExpression,Block,Module,If, etc. then the newly created variable is created in the wrong context: In[46]:= Remove[f, Test`f] In[47]:= BeginPackage["Test`"]; f = 1; EndPackage[]; In[48]:= Context[f] Out[48]= "Global`" I say the "wrong" context because there is nothing documented (that I can find) which suggests that changing $Context or $ContextPath will result in any delay until the change takes effect. For what I am doing, it is essential that the context change immediately, otherwise all my effort is for nothing. Can anybody tell me what I might be doing wrong, or perhaps an alternate method to accomplish my goal? Thanks, Michael