Block
может помочь с тем, что вы хотите:
f[x_] := x + 1;
g[x_] := x - 1;
In[13]:= Block[{f},
Hold@Evaluate[(f[g[a]]^2)]
]
Out[13]= Hold[f[-1 + a]^2]
Хотите ли вы предотвратить оценку для определенных моделей снижения стоимости f
?(Например, блок f[x_]
, но разрешить f[x_, y_]
)?
ОБНОВЛЕНИЕ
Вот функциональная форма:
SetAttributes[EvaluateHeld, HoldAll];
EvaluateHeld[expr_, symbols : {__Symbol}] :=
Block[symbols, Hold@Evaluate[expr]
]
In[7]:= EvaluateHeld[f[g[a]]^2, {f}]
Out[7]= Hold[f[-1 + a]^2]