Re: basic issue with do and :=
- To: mathgroup at smc.vnet.net
- Subject: [mg60444] Re: basic issue with do and :=
- From: "dkr" <dkrjeg at adelphia.net>
- Date: Fri, 16 Sep 2005 03:50:39 -0400 (EDT)
- References: <dgbevg$fol$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
>> Is there any compact way to define: "b[i] :=a[i]+1" for all i ?
Use a pattern variable on the lefthand side:
In[8]:=
a[i_]:=i;
b[i_]:=a[i]+1;
In[10]:=
Table[{a[i],b[i]},{i,10}]
Out[10]=
{{1,2},{2,3},{3,4},{4,5},{5,6},{6,7},{7,8},{8,9},{9,10},{10,11}}
In your expression Do[b[i] :=a[i]+1, {i, 10}] , what is happening is
that i gets set to a certain value, that value is then fed to b[i] (but
not a[i]+1, since SetDelayed does not immediately evaluate its
righthand side.