Вопрос о вложенных Unevaluated

Когда пытался смоделировать поведение оценки 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]

Видно, что полностью удаляется только четное количество вложенных неоцененных оберток. Почему?

6
задан Community 23 May 2017 в 12:04
поделиться