From: Leonid Shifrin on
I think we should not forget about the evaluation aspects of Mathematica:

In[1]:=
n = 0;
a >= a /. a :> n++

Out[2]= False

However, by the same logic <a> may not be equal to itself in some cases. If
we use Unevaluated to simulate the situation where a==a would not evaluate,
we get also:

In[3]:= Unevaluated[a == a] /. a :> n++

Out[3]= False

So, the question I'd ask (given the programming/evaluation aspects) is not
why the rest of your expressions
did not evaluate (which from that viewpoint is correct - it reflects the
appreciation that by the time that <a> on the r.h.s is evaluated its value
may have changed as a result of the evaluation of the l.h.s), but why the
first did (a==a). I would guess this is because, in most cases (including
this one), the logic is that if SameQ gives true then Equal should also.
Overall, all this behavior looks to me like a deliberate design decision.

Regards,
Leonid


On Wed, May 19, 2010 at 3:03 PM, telefunkenvf14 <rgorka(a)gmail.com> wrote:

> Can someone offer an explanation for the following output?---I'm
> trying to understand why it makes sense for Mathematica to be set up
> to respond like this. (Of course, feel free to point out any glaringly
> obvious math examples.)
>
> In[1]:= {a == a, a <= a, a >= a, a < a, a > a}
>
> Out[1]= {True, a <= a, a >= a, a < a, a > a}
>
> I would have thought that a <= a and a >= a would both evaluate to
> True, given that a == a does. Also, can something really be greater
> than itself? Hmmm... maybe there's hope for me after all. :)
>
> -RG
>
 | 
Pages: 1
Prev: Basic histogram
Next: Evaluate to...