I am fairly new to Mathematica. I am working my way through a number of books. I have been looking at the use of
SetDelayed and want to confirm that my understanding is correct. I define a function as follows.
f[x_]:= f[x] = x;
When I evaluate
?f, I can see a rule for this function. Now each time I evaluate
f, I see another rule is created for
f. So by declaring the function as above, I ensure that for any given value of
x the function will only be evaluated once.
Suppose I had declared functions
g as follows.
f[x_] := f[x] = Sin[x] + Cos[x]; g[x_] := Sin[x] + Cos[x];
Am I correct in saying that, for any given
f will only be evaluated once? That is, for a given value of
Cos[x] will only be called once; whereas in the case of
g, each time
g is called, Mathematica will evaluate both
Cos[x]? Will using
Trace confirm this?