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.