Mathematica bug when resolving Contex-names
- To: mathgroup@smc.vnet.net
- Subject: [mg11198] Mathematica bug when resolving Contex-names
- From: ozan@matematik.su.se (Ozan Vktem)
- Date: Mon, 2 Mar 1998 23:10:52 -0500
- Organization: Department of Mathematics, Stockholm University
Hi,
I actually have two questions/bug reports. The first one about
resolving Contex-names and the other about handling ticks. Please also
e-mail any answers/replies to
ozan.oktem@foreningssparbanken.se
Question 1: Bug in the way Mathematica handels Contex-names?
I can't get Mathematica to load packages and resolve Contex-names
in a proper way. Let me illustrate the problem with a simple example:
We start by creating three packages, "a.m", "b.m" and "c.m".
All reside in the following directory (I use Win NT 4.0 with
Mathematica 3.01):
C:\users\default\Mathematica\3.0\AddOns\Applications\test
The package "a.m" is given by
BeginPackage["test`A`"]
procA::usage = "some text"
Begin["`Private`"]
procA[x_] := x;
End[]
EndPackage[]
The package "b.m", which uses the package "a.m", is given by
BeginPackage["test`B`"]
procB::usage = "Some text about the routine"
Begin["`Private`"]
Needs["test`A`"]
procB[x_]:=procA[x]+1
End[]
EndPackage[]
Finally, the package "c.m", which uses the package "b.m", is given by
BeginPackage["test`C`"]
procC::usage = "Some text about the routine"
Begin["`Private`"]
Needs["test`B`"]
procC[list_]:=procB[x]-1
End[]
EndPackage[]
Now, in a Mathematica notebook, let's type
In[1]:= <<test`a`
In[2]:= procA[x]
Out[2]:= x
and everything works fine. Also, restarting the kernel and typing
In[1]:= <<test`b`
In[2]:= procB[x]
Out[2]:= 1+x
shows that everything works as expected. However, restarting the
kernel and typing
In[1]:= <<test`c`
In[2]:= procC[x]
Out[2]:= test`C`Private`x
shows that something is wrong! It seems that Mathematica can not
resolve Contexe-names more than one level. Is this a bug or am
I doing something wrong? Any suggestions are welcomed.
Question 2: Bug in the way Mathematica handels ticks? I can not
understand
the way Mathematica handels ticks in plotting graphics. The following
example illustrates the problem:
Ex1: In[1]:=testlist=Table[j,{j,1,5}];
In[2]:=ListPlot[testlist,Ticks->{{{1,"A"},{2.7,"B"},{5,"C"}},Automatic}]
If things were according to the Mathematica book, I would have the
tickmark "A"
under x=1 on the x-axis, "B" under x=2.7 on the x-axis and "C" under
x=5
on the x-axis. However, only the ticks for "B" and "C" appear! Even
more
confusing is the following example:
Ex2: In[1]:=testlist=Table[j,{j,1,5}];
In[2]:=ListPlot[testlist,Ticks->{{{1,"A"},{2.7,"B"},{5,"C"}},Automatic},
PlotRange->{{0,5},Automatic}]
Then all ticks appear in their proper places. Thus, the placement of
ticks seems to depend on the PlotRange settings! This is not mentioned
in the Mathematica book. Does anybody know exactly how this dependence
is?
In example 1 above, why is the tickmark "C" placed correctly but "A"
is not?
Both ticks are at the end of the PlotRange which is [0,5].
Finally consider the following example:
Ex3: In[1]:=testlist=Table[j,{j,1,5}];
In[2]:=ListPlot[testlist,Ticks->{{{1,"A"},{2.7,"B"},{5,"C"}},Automatic},
PlotRange->{{0.25,5},Automatic}]
Still, "A" is not placed under x=1, even though the PlotRange is
[0.25,5],
i.e. it contains x=1 which is the position for the ticlmark "A".
--
To get random signatures put text files into a folder called 3Random
Signatures2 into your Preferences folder.