Mathematica - почему TreeForm [Без оценки [4 ^ 5]] оценивает 4 ^ 5? - PullRequest
8 голосов
/ 20 апреля 2011

Если я укажу Mathematica ввод

TreeForm[Unevaluated[4^5]]

Я ожидаю увидеть три поля - power, 4 и 5.

Вместо этого я вижу один блок с 1024. Может кто-нибудьобъяснить?

Ответы [ 2 ]

18 голосов
/ 20 апреля 2011

Уровень Unevaluated отбрасывается при каждой оценке, поэтому вы можете получить то, что хотите:

TreeForm[Unevaluated@Unevaluated[4^5]]

enter image description here

9 голосов
/ 20 апреля 2011

Сравнить

TreeForm@Unevaluated[4^5]  

enter image description here

с

TreeForm@Hold[4^5]  

enter image description here

С помощью:

Неоцененный [expr] представляет неоцененную форму expr, когда он появляется в качестве аргумента функции.

и

Удержание [expr] поддерживает expr в неоцененной форме.

так что, когда Unevaluated [4 ^ 5] попадает в TreeForm ... он оценивается ...

Работает так:

f[x_+y_]:=x^y;
f[3+4]
(*
-> f[7]
*)
f[Unevaluated[3+4]]
(*
->81
*)
...