Mathematica - 为什么 TreeForm[Unevaluated[4^5]] 评估 4^5?

发布于 2024-11-02 05:51:16 字数 148 浏览 0 评论 0原文

如果我向 Mathematica 提供输入,

TreeForm[Unevaluated[4^5]]

我希望看到三个方框——幂、4 和 5。

相反,我看到一个带有 1024 的方框。有人能解释一下吗?

If I give Mathematica the input

TreeForm[Unevaluated[4^5]]

I expect to see three boxes -- power, 4, and 5.

Instead I see a single box with 1024. Can anyone explain?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

吃颗糖壮壮胆 2024-11-09 05:51:16

每次评估都会取消 未评估 级别,因此您可以通过以下方式获得所需内容:

TreeForm[Unevaluated@Unevaluated[4^5]]

A level of Unevaluated is stripped off with every evaluation, so you can get what you want with:

TreeForm[Unevaluated@Unevaluated[4^5]]

enter image description here

木槿暧夏七纪年 2024-11-09 05:51:16

比较

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
*)

Compare

TreeForm@Unevaluated[4^5]  

enter image description here

with

TreeForm@Hold[4^5]  

enter image description here

From the help:

Unevaluated[expr]
represents the unevaluated form of expr when it appears as the argument to a function.

and

Hold[expr]
maintains expr in an unevaluated form.

so, as Unevaluated[4^5] gets to TreeForm ... it gets evaluated ...

It works like this:

f[x_+y_]:=x^y;
f[3+4]
(*
-> f[7]
*)
f[Unevaluated[3+4]]
(*
->81
*)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文