好日子,了解跟踪*
当试图通过使用标准Trace
和TraceScan
命令及其漂亮的视觉表现在最近thread发展到了解数学的评价程序,我遇到了一些含糊其行为。
首先,当我评价
在[1]:=跟踪并[a + 1,TraceOriginal->真]
我得到
缺货[ 1] = {a + 1,{Plus},{a},{1},a + 1,1 + a,{Plus},{1},{a},1 + a}
所有子列表都对应于子评估(如文档中所述)。最后一个表达式1+a
可能与评估结果相对应,尽管在文档中没有明确说明。但究竟是什么意思表达式a+1
和1+a
在列表中间? the standard evaluation sequence对应哪些评估步骤对应?
第二个奇怪的是与TraceScan
。考虑以下内容:
In [1]:= list = {}; TraceScan [AppendTo [list,StyleForm [#,“Input”]] &,(a + 1),_,AppendTo [list,#] &];列表
输出[1] = {一个+ 1,加,另外,一个,一个,,1,1 +一个,加,另外,,1,一个,一,1 + A,A + 1}
你可以看到,在列表中的最后两个表达式是1+a
和a+1
。两者都是(分)评估的结果。但真正的产出是1+a
,所以我不明白为什么a+1
在评估链的末尾?为什么在评估链中间没有a+1
,因为它是Trace
的情况?这是一个错误吗?
P.S.这些结果转载于Mathematica 7.0.1和5.2。
我认为这应该迁移到:http://math.stackexchange.com/ – RobertPitt 2011-04-06 07:03:33
@RobertPitt这个问题不是关于数学。它只与* Mathematica *的内部相关。正如你所看到的,我尽可能使用原始的例子:当'a'未定义时,在* Mathematica *中评估表达式'a + 1'。我正在尝试理解* Mathematica *内部发生的事情,当我评估这个时。这似乎并不像预期的那么简单...... – 2011-04-06 07:55:31
@RobertPitt这是一个常见的误解。标签Mathematica是指由Wolfram Research Inc.开发的Mathematica程序。它不等同于_Mathematics_或_math_。另见http://meta.stackexchange.com/q/81152/158668。 – 2011-04-06 08:59:59