使用Mathematica来理解编译器优化:访问使用SetDelayed创建的定义?
最近,我一直对更好地理解编译器后端所做的优化感兴趣。我认为使用Mathematica来探索它可能会有所帮助,因为它可以很容易地创建,显示和操作语法树。
我想我会从简单开始,看看不断传播。所以我写了一个简单的函数,并试图查看语法树。
f2[x_, y_] := Module[{temp1},
temp1 = 5;
Return[(x + temp1)*y];
]
FullForm[f2]
然而,FullForm [f2]的结果只是f2。我知道这个表达式的右边必须存储在Mathematica的某个地方,所以我的问题是它在哪里,是否可以在使用SetDelayed运算符“:=”创建此规则后对其进行修改?
与此同时,我发现我可以使用函数符号来实现我的目标,但我仍然想了解Mathematica做得更好。
f1 = Function[{x, y}, Module[{temp1},
temp1 = 5;
Return[(x + temp1)*y]
]
]
TreeForm[f1]
没有找到相关结果
已邀请:
1 个回复
铰齐插
和
定义产生所谓的下值定义,可以用
访问:
您甚至可以分配回
:
简单赋值生成自己的值定义,可以使用
进行访问和操作:
这是一个包含有关值列表的更多信息的教程。 HTH!