Re: := vs. =
- To: mathgroup at smc.vnet.net
- Subject: [mg8943] Re: [mg8858] := vs. =
- From: penny at suu.edu (Des Penny)
- Date: Sat, 4 Oct 1997 22:08:19 -0400
- Sender: owner-wri-mathgroup at wolfram.com
>When I define a function on Mathematica, I use f[x_]=xxxxx, without >using a colon. It seems to work just fine. Is there a risk in leaving >out the colon? Thanks. > >Frank Hi Frank: Yes there is a danger. If you don't understand the difference, I recommend that you use the delayed definition := Look at the following code to understand the difference: In: c=5; f[x_]= Sin[c x] g[x_] := Sin[c x] We can now get information on how these functions are stored: In: ?f Out: Global`f f[x_] = Sin[5*x] In: ?g Out: Global`g f[x_] = Sin[c*x] If we now change the value of c, we see that the definition of f is unchanged whereas g is changed: In: c=6; f[x] Out: Sin[5 x] In: g[x] Out: Sin[6 x] Thus, the delayed definition, :=, causes Mma to store the definition without using the current value of c. For most uses this is the preferred way to define a function. There are however a few cases where it is preferable to use the immediate definition: In: Clear[f]; f[x_]=Integrate[Sin[t], {t,0,x}] Timing[Table[f[x], {x,0,5,0.01}]][[1]] Out: 0.183 Second In: Clear[g]; g[x_]:=Integrate[Sin[t], {t,0,x}] Timing[Table[g[x], {x,0,5,0.01}]][[1]] Out: 47.53 Second The reason for the above becomes clear when you look at how Mma stores the definitions of f and g: ?f Global`f f[x_]=1-Cos[x] ?g Global`g g[x_]:=Integrate[Sin[t],{t,0,x}] Therefore, the immediate definition, =, forces an immediate evaluation of the integral. The answer is stored as the definition of f. The delayed definition, :=, just stores the integral. Thus g must be integrated afresh for each of the 500 values of x between 0 and 5. I use the immediate definition whenever I need to force the evaluated form of the definition to be stored by Mma. Otherwise I use the delayed definition. Hope this helps. Cheers, Des Penny ------------------------------- Des Penny Physical Science Dept. Southern Utah University Cedar City, UT 84720 VOICE: (Office): (801) 586-7708 (Home) : (801) 586-2286 FAX: (801) 865-8051 e-mail: penny at suu.edu -------------------------------