Re: Sequence is funny !
- To: mathgroup at smc.vnet.net
- Subject: [mg8950] Re: [mg8852] Sequence is funny !
- From: Peder Thusgaard Ruhoff <ptr at mip.ou.dk>
- Date: Mon, 6 Oct 1997 01:59:18 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Gilles BARBIER wrote: > For some people who like to understand the internal mechanism > of Mathematica, I give them this little problem a friend sent to me: > > Why Table[i,{i,Sequence[1,3]}] gives {1,2,3,4} instead of {1,2,3}!! > > That's not a bug, I even have an explanation,if you are interested. > > Hope it's fun, > > Gilles. ============================================================================ In[1]:= Table[i,{i,Sequence[1,3]}] Out[1]= {1, 2, 3, 4} ============================================================================ Using the built-in command Evaluate you can get the "expected" result ============================================================================ In[2]:= Table[i, Evaluate[{i, Sequence[1, 3]}]] Out[2]= {1, 2, 3} ============================================================================ To see what is really goin on I recommen using the built-in command On ============================================================================ In[3]:= On[] On::trace: On[] --> Null. In[4]:= Table[i,{i,Sequence[1,3]}] Plus::trace: Sequence[1, 3] - 1 --> 1 + 3 - 1. Plus::trace: 1 + 3 - 1 --> -1 + 1 + 3. Plus::trace: -1 + 1 + 3 --> 3. Plus::trace: 1 + (Sequence[1, 3] - 1) --> 1 + 3. Plus::trace: 1 + 3 --> 4. Floor::trace: Floor[4] --> 4. i::trace: i --> 1. i::trace: i --> 2. i::trace: i --> 3. i::trace: i --> 4. Table::trace: Table[i, {i, Sequence[1, 3]}] --> {1, 2, 3, 4}. Out[4]= {1, 2, 3, 4} In[5]:= Table[i,Evaluate[{i, Sequence[1, 3]}]] List::trace: {i, Sequence[1, 3]} --> {i, 1, 3}. Table::trace: Table[i, Evaluate[{i, Sequence[1, 3]}]] --> Table[i, {i, 1,3}]. Plus::trace: 3 - 1 --> 2. Plus::trace: 1 + (3 - 1) --> 1 + 2. Plus::trace: 1 + 2 --> 3. Floor::trace: Floor[3] --> 3. i::trace: i --> 1. i::trace: i --> 2. i::trace: i --> 3. Table::trace: Table[i, {i, 1, 3}] --> {1, 2, 3}. Out[5]= {1, 2, 3} =========================================================================== Hope the above helps. Peder -------------------------------------+-------------------------------------- Peder Thusgaard Ruhoff, Ph.D. | Phone: (+45) 63 15 71 12 The Maersk Mc-Kinney Moller | Secretary: (+45) 63 15 71 63 Institute for Production Technology | Fax: (+45) 65 93 23 09 Odense University | Campusvej 55 | E-mail: ptr at mip.ou.dk DK-5230 Odense M, DENMARK | URL: http://www.mip.ou.dk -------------------------------------+-------------------------------------- "It is important for him who wants to discover not to confine himself to one chapter of science, but to keep in touch with various others" - J. Hadamard