Re: := vs = in some function definitions

*To*: mathgroup at smc.vnet.net*Subject*: [mg113273] Re: := vs = in some function definitions*From*: Bill Rowe <readnews at sbcglobal.net>*Date*: Thu, 21 Oct 2010 07:03:45 -0400 (EDT)

On 10/20/10 at 4:06 AM, sam.takoy at yahoo.com (Sam Takoy) wrote: >Have read everything I could find regarding delayed assignment, I'm >still not quite sure when to use which. >For example, in the definition >f[x_] = IdentityMatrix[50].Append[Range[1, 49], x]; >could there ever be any reason to use := ? Consider the following: In[1]:= x = 4; f[x_] = x^2 Out[2]= 16 In[3]:= f[5] Out[3]= 16 The result obtained for f[5] is probably not what you would want. >It seems that using := will condemn the function to repeated >extra work every time its called. Exactly. >So could there be a situation where the use of ":=" for the above >function is recommended? Consider a different problem where x is not assigned a value before the function is assigned. In[1]:= f[x_] = RandomInteger[{1, 10}] x Out[1]= 9 x In[2]:= f[3] Out[2]= 27 In[3]:= f[2] Out[3]= 18 Here, the evaluation of RandomInteger only once means the function result will no longer be a random multiple of x. This would obviously be a problem for a simulation of a random process.