Dr.*_*ius 4 wolfram-mathematica
我想这很容易,我忽视的是一个明显的文盲迹象,但无论如何.
那个怎么样
(Map[Sign, LessEqual[x, y]]) === LessEqual[Sign[x], Sign[y]]
-> True
Run Code Online (Sandbox Code Playgroud)
但
(Map[Sign, LessEqual[-1, -100]]) == LessEqual[Sign[-1], Sign[-100]]
-> False
Run Code Online (Sandbox Code Playgroud)
在lhs上使用Trace将有助于显示发生了什么.
Trace[Map[Sign, LessEqual[-1, -100]]]
Run Code Online (Sandbox Code Playgroud)
Out [2] = {{-1 <= -100,False},Sign/@ False,False}
请注意,Map没有HoldXXX属性.
Attributes[Map]
Run Code Online (Sandbox Code Playgroud)
Out [3] = {Protected}
因此,在Map执行任何操作之前,LessEqual会进行评估.你得到了什么
Map[Sign,False]
Run Code Online (Sandbox Code Playgroud)
由于False是一个原子表达式,因此它的计算结果为False.
当然,rhs的计算结果为True,因为Sign [-1]和Sign [-100]都是-1.
Daniel Lichtblau Wolfram Research