I want a function that works like in the following example: it gets an expression which contains a variable var and evaluate it setting setting var = value.
I used Block
to avoid expr being evaluated if variable var holds a value in the notebook. It seems that my function works correctly - I made also a trace - but I get var inside block coloured red and I think it's a warning from Mathematica. Can you explain to me why I obtain it? Is my code wrong? Is there a better way to obtain the desired behavior?
SetAttributes[myFunc, HoldFirst];
myFunc[{expr_, var_}, value_] :=
Block[{var}, expr /. var :> value]
myFunc[{expr_, var_Symbol}, value_]
. $\endgroup$