Re: Undiscovered Bug?
- To: mathgroup at smc.vnet.net
- Subject: [mg46875] Re: [mg46862] Undiscovered Bug?
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Fri, 12 Mar 2004 23:39:21 -0500 (EST)
- References: <200403120702.CAA25505@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On 12 Mar 2004, at 08:02, Harold Noffke wrote:
> MathGroup:
>
> In Mathematica 5.0.1 with Windows 2000, I mistakenly used the [[{}]]
> operator on x/y. I was expecting an error, but I kept getting unusual
> results as shown in In/Out's 2 to 5 below.
>
> Have I stumbled on a bug, or is there a way to make sense out of this?
>
>
> In[1]:= TreeForm[x/y]
>
> Out[1]//TreeForm= Times[x, | ]
> Power[y, -1]
>
> In[2]:= (x/y)[[{2,2}]]
>
>
> Out[2]= -2
> y
>
> In[3]:= (x/y)[[{1,2,1}]]
>
> 2
> x
> Out[3]= --
> y
>
> In[4]:= (x/y)[[{2, 2, 2, 2}]]
>
> -4
> Out[4]= y
>
> In[5]:= (x/y)[[{2, 1, 1, 0, 2, 2, 0}]]
>
> 2 2
> Times x
> Out[5]= ---------
> 3
> y
>
>
> Regards,
> Harold
>
>
>
No, no bug at all, this is perfectly all right, except for somewhat
confusing documentation. The problem is:
In[1]:=
?Part
expr[[ {i1, i2, ... } ]] gives a list of the parts i1, i2, ... of
expr.
which is not true unless expr is a List. However, going deeper into the
documentation you can get the correct information:
When expr is a list, expr[[ {i1, i2, ? in} ]] gives a list of parts. In
general, the head of expr is applied to the list of parts.
Thus:
In[8]:=
f[a, b][[{1, 2}]]
Out[8]=
f[a, b]
In words, Parts 1 and 2 of f[a,b] were extracted giving {a,b} and then
the head f was applied giving f[a,b]. For the same reason:
In[9]:=
f[a, b][[{2, 2}]]
Out[9]=
f[b, b]
This time b was extracted twice. You can also extract part 0 to get w
weird result:
In[10]:=
f[a, b][[{2, 0}]]
Out[10]=
f[b, f]
Now your cases ought to be clear. (Look at FullForm of your
expressions).
Andrzej Kozlowski
Chiba, Japan
http://www.mimuw.edu.pl/~akoz/
- References:
- Undiscovered Bug?
- From: Harold.Noffke@wpafb.af.mil (Harold Noffke)
- Undiscovered Bug?