Если я укажу Mathematica ввод
TreeForm[Unevaluated[4^5]]
Я ожидаю увидеть три поля - power, 4 и 5.
Вместо этого я вижу один блок с 1024. Может кто-нибудьобъяснить?
Уровень Unevaluated отбрасывается при каждой оценке, поэтому вы можете получить то, что хотите:
Unevaluated
TreeForm[Unevaluated@Unevaluated[4^5]]
Сравнить
TreeForm@Unevaluated[4^5]
с
TreeForm@Hold[4^5]
С помощью:
Неоцененный [expr] представляет неоцененную форму expr, когда он появляется в качестве аргумента функции.
и
Удержание [expr] поддерживает expr в неоцененной форме.
так что, когда Unevaluated [4 ^ 5] попадает в TreeForm ... он оценивается ...
Работает так:
f[x_+y_]:=x^y; f[3+4] (* -> f[7] *) f[Unevaluated[3+4]] (* ->81 *)