Re: Span Set nasty bug
- To: mathgroup at smc.vnet.net
- Subject: [mg123834] Re: Span Set nasty bug
- From: Oliver Ruebenkoenig <ruebenko at wolfram.com>
- Date: Thu, 22 Dec 2011 04:25:27 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201112161054.FAA07002@smc.vnet.net>
On Fri, 16 Dec 2011, roby wrote:
> Dear group & Mathematica team
>
> I am trying to assign a non existing element member of a 2D List.
> Due to the coosen Span the element should not exist respectivly not be
> assigned.
> when the non existing element is queried e.g. {} should be returned
>
> please take a look on the following assignment:
>
> In[43]:= t = Table[0, {15}, {15}];
> t[[1 ;; 0, 1 ;; 1]] = 1;
> t[[1 ;; 0, 1 ;; 1]]
> t[[1, 1]]
>
> Out[45]= {}
>
> Out[46]= 0
>
> so far so good no element gets assigned and the query works,
> after changing 15 to 16 or greater the query still works but the
> following happens element [[1,1]] gets a value assigned:
>
> In[47]:= t = Table[0, {16}, {16}];
> t[[1 ;; 0, 1 ;; 1]] = 1;
> t[[1 ;; 0, 1 ;; 1]]
> t[[1, 1]]
>
> Out[49]= {}
>
> Out[50]= 1
>
> Is this a bug or is it a feature ?
>
>
Roby, are you aware that expr[[0]] gives access to the head? Why do you do
it this way?
The fact that results differ is due to the compilation in Table. You can
modify this behavior (which I do not suggest)
SetSystemOptions["CompileOptions" -> {"TableCompileLength" -> 1}]
I think if you do not want to assign, do not do it.
t[[1]]
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
t[[0]]
List
t[[1 ;; 0]]
{}
Length[t[[1 ;; 0]]]
0
(* it is somewhat unfortunate that the following does not issue a
message *)
t[[1 ;; 0, 1]]
{}
t[[1 ;; 0]][[1]]
Oliver
- References:
- Span Set nasty bug
- From: roby <roby.nowak@gmail.com>
- Span Set nasty bug