Re: understanding code

*To*: mathgroup at smc.vnet.net*Subject*: [mg114167] Re: understanding code*From*: Bill Rowe <readnews at sbcglobal.net>*Date*: Fri, 26 Nov 2010 05:26:25 -0500 (EST)

On 11/25/10 at 5:57 AM, sam.takoy at yahoo.com (Sam Takoy) wrote: >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... It is a function. i[1] is the function i evaluated at i. You can see what is going on by using Trace, i.e., In[3]:= Trace[i[1]++] Out[3]= {i(1)++,{i(1),0},{i(1)=1,1},0} As you can see, i[1] gets evaluated to whatever value it had previously which initially is zero. Then the result gets incremented by 1 and is then assigned to be the new value for i[1]. This last step is not something I would have expected without your example and I don't know why it occurs. I can see times where this behavior might be useful. For example, it is at times convenient to see i[1] as a subscripted variable. Thinking of i[1] this way, the notation i[1]++ would be interpreted as incrementing the subscripted variable by one and the Mathematica behavior is consistent with this.