Когда пытался смоделировать поведение оценки RuleDelayed
, я столкнулся с неожиданным поведением вложенного Unevaluated
. Рассмотрим:
In[1]:= f[Verbatim[Unevaluated][expr_]] := f[expr]
f[Unevaluated[1 + 1]]
f[Unevaluated@Unevaluated[1 + 1]]
f[Unevaluated@Unevaluated@Unevaluated[1 + 1]]
f[Unevaluated@Unevaluated@Unevaluated@Unevaluated[1 + 1]]
Out[2]= f[Unevaluated[1 + 1]]
Out[3]= f[2]
Out[4]= f[Unevaluated[1 + 1]]
Out[5]= f[2]
Видно, что полностью удаляется только четное количество вложенных неоцененных
оберток. Почему?