Re: understanding code

*To*: mathgroup at smc.vnet.net*Subject*: [mg114196] Re: understanding code*From*: Leonid Shifrin <lshifr at gmail.com>*Date*: Fri, 26 Nov 2010 05:31:44 -0500 (EST)

Sam, i[1] is in this context what is called "indexed variable". It can be used in most cases where the variable can, except in some where Symbol is required explicitly, such as a part assignment or local variables in scoping constructs or pattern names etc. The part assignment restriction is illustrated by the following: In[1]:= a[1]={1,2,3} Out[1]= {1,2,3} In[2]:= a[1][[2]] Out[2]= 2 In[3]:= a[1][[2]]=0 During evaluation of In[3]:= Set::setps: a[1] in the part assignment is not a symbol. >> Out[3]= 0 Similarly with other cases where Symbol is required. I briefly discussed indexed variables here: http://www.mathprogramming-intro.org/book/node91.html In this particular case, however, since there is i[_] as well, you can also interpret i as a function, defined both in general and on some specific values of the argument. The difference between functions (pattern-based) and variables is somewhat blurred in Mathematica. Hope this helps. Regards, Leonid On Thu, Nov 25, 2010 at 1:57 PM, Sam Takoy <sam.takoy at yahoo.com> wrote: > Hi, > > The following code: > > i[_] = 0; > i[1]++ > i[1]++ > i[1]++ > i[1]++ > > > return 0 1 2 3 4. I'd like to understand whats going on here. That is, > > What is i? Is it a function? And what is i[1]? Is it a function or a > value? Etc... > > > Many thanks in advance, > > Sam > >