I don't understand the behaviour of the following:
test0[x_, y_] := Module[
{},
a = 2*x;
Return[y]
];
test1[] := Module[
{},
a
];
Now I run this little programms:
In[168]:= Remove["a"]
test0[1, test1[]]
test0[2, test1[]]
test0[3, test1[]]
Out[169]= 2
Out[170]= 2
Out[171]= 4
If "a" ist not defined, "a" will be evaluated in bevor calling test1[], but if "a" has already a value then "a" is evaluated after calling test1[]. How can I force that "a" ist always evaluated before?