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
>
>