MathGroup Archive 2001

[Date Index] [Thread Index] [Author Index]

Search the Archive

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




  • Prev by Date: RE: sort
  • Next by Date: Re: RE: notation help: f(x) = (sin x)^(1/3)
  • Previous by thread: RE: Triangular Probability Distributions
  • Next by thread: Re: Delay in $Context changes taking effect?