MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Equals, Less, Greater, etc; Confused by this simple

I think we should not forget about the evaluation aspects of Mathematica:

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.


On Wed, May 19, 2010 at 3:03 PM, telefunkenvf14 <rgorka at> 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

  • Prev by Date: Re: ProgressIndicator inside DynamicModule
  • Next by Date: Re: ProgressIndicator inside DynamicModule
  • Previous by thread: Re: Orthogonal Distance Regression available?
  • Next by thread: Read/Write streams in parallel