Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2009

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

Search the Archive

Re: Re: confused about == vs === in this equality

  • To: mathgroup at smc.vnet.net
  • Subject: [mg103859] Re: [mg103825] Re: confused about == vs === in this equality
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Fri, 9 Oct 2009 07:18:17 -0400 (EDT)
  • References: <20091003104738.LCJ3I.416659.imail@eastrmwml34> <200910040935.FAA07794@smc.vnet.net> <hacmoa$sko$1@smc.vnet.net> <200910081150.HAA13555@smc.vnet.net> <4189AD13-818D-4022-B5BC-5F9E92D64AC9@mimuw.edu.pl>

In my post below I wrote "missing" instead of "Missing" and  
"Intermedite" instead of "Indeterminante" (3 times!) How much more  
mindless can one get?

Andrzej


On 9 Oct 2009, at 11:14, Andrzej Kozlowski wrote:

> Hi Drago,
>
> I have to say I am not convinced about Null (I have not thought  
> about missing). My reason is simply this: in the case of  
> Intermediate it is easy to construct two completely unrelated  
> expressions which will evalute to Intermediate. Having  
> Intermediate==Intermediate evaluate to True would lead to equality  
> between these expressions also evaluating to True. Conceivably this  
> could be "hidden" within some complicated computation and result in  
> a totally misleading final result.
>
> On the other hand I don't know of anything but Null that *evaluates"  
> to Null. If you can produce two obviously unrelated expressions both  
> of which evaluate to Null then indeed I will agree with you. As it  
> is I think the current situation is just fine.
>
> Andrzej
>
>
> On 8 Oct 2009, at 20:50, Drago Ganic wrote:
>
>> Hi Andrzej,
>> there is one function (Missing) and one symbol (Null) which  
>> >>should<<
>> behave the same as Indetereminate and ComplexInfinity but  
>> unfortunatly does
>> not.
>>
>> In[1]:= Null == Null
>> Out[1]= True
>>
>> In[2]:= Missing[] == Missing[]
>> Out[2]= True
>>
>> Null is Mathematica legacy which has basically the same meaning as  
>> Missing[]
>> (or maybe Missing["Nonexistent"]). Missing incorporates  
>> Indetereminate via
>> Missing["Indeterminate"].
>> All of those (Indetereminate & ComplexInfinity for numeric data and
>> Null/Missing for any kind of data), are so called "null values" in  
>> database
>> systems and for them the Equal and other logical connectivities  
>> (And, Or,
>> Not, etc.) are overloaded. Unfortunatly this is not the case in  
>> Mathematica.
>>
>> Greetings from Croatia,
>> Drago Ganic
>>
>> "Andrzej Kozlowski" <akoz at mimuw.edu.pl> wrote in message
>> news:hacmoa$sko$1 at smc.vnet.net...
>>> I amy be taking a bit of a risk here, but I would guess that
>>> ComplexInfinity and Indeterminate are the only symbols in  
>>> Mathematica
>>> with this property, that is we get:
>>>
>>> a=ComplexInfinity
>>>
>>> TrueQ[Unevaluated[x == x] /. x -> a]
>>>
>>> False
>>>
>>> a = Indeterminate;
>>>
>>> TrueQ[Unevaluated[x == x] /. x -> a]
>>>
>>> False
>>>
>>> I believe that there are no other symbols for which this happens (?)
>>> (If I am right and it is the only one that there is no need to be
>>> seriously concerned or, as you say, "careful" about this issue.)
>>>
>>> Why does and Indeterminate and ComplexInfinity behave in this way?  
>>> Of
>>> course this is a matter of design and not (for example)  
>>> mathematics so
>>> the question really is, is this a reasonable and useful thing rather
>>> than if it is right. I guess it is pretty clear that since
>>> Indeterminate refers to a magnitude that cannot be determined, you
>>> would not really want to assert that two expressions, both of which
>>> evaluate to Indeterminate, are in any sense equal. For example it
>>> would seem very strange if
>>>
>>> Infinity - Infinity == Infinity/Infinity
>>>
>>> returned True (as would have to be the case if
>>> Indeterminate==Indeterminate returned True). Similar considerations
>>> perhaps apply to ComplexInfinity, which refers to a complex quantity
>>> with infinite magnitude but with an indeterminate argument.  
>>> (However,
>>> I am less convinced of that in the case of ComplexInfinty than in  
>>> the
>>> case of Indeterminate, because ComplexInfinity has a natural
>>> interpretation as a unique point on the Riemann sphere).
>>>
>>> (Of course === asks quite a different question and there is no doubt
>>> that when you have identical expressions on both sides of === the
>>> answer should always be True.)
>>>
>>> Andrzej Kozlowski
>>>
>>>
>>>
>>>
>>>
>>>
>>> On 4 Oct 2009, at 18:35, Nasser Abbasi wrote:
>>>
>>>> ?===
>>>> lhs===rhs yields True if the expression lhs is identical to rhs,  
>>>> and
>>>> yields
>>>> False otherwise.
>>>>
>>>> ?==
>>>> lhs==rhs returns True if lhs and rhs are identical.
>>>>
>>>> But looking at this example:
>>>>
>>>> a = ComplexInfinity;
>>>> If[a == ComplexInfinity, Print["YES"]]
>>>>
>>>> Expecting it would print "YES", but it does not. it just returns  
>>>> the
>>>> whole
>>>> thing unevaluated? But
>>>>
>>>> If[a === ComplexInfinity, Print["YES"]]
>>>>
>>>> does return YES.
>>>>
>>>> I guess I am a little confused about the "expression" bit in the
>>>> definition.
>>>>
>>>> So, when using the 3"=", it is looking at the _value_ of the
>>>> expression, but
>>>> when using the 2"=", it is looking at the expression _as it is_,  
>>>> i.e.
>>>> without evaluating it?  Is this the difference?  I've always used
>>>> the 2"="
>>>> for equality, now I have to be more careful which to use.
>>>>
>>>> --Nasser
>>>>
>>>>
>>>> __________ Information from ESET NOD32 Antivirus, version of virus
>>>> signature database 4478 (20091003) __________
>>>>
>>>> The message was checked by ESET NOD32 Antivirus.
>>>>
>>>> http://www.eset.com
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>



  • Prev by Date: Re: Re: confused about == vs === in this equality
  • Next by Date: Re: confused about == vs === in this equality
  • Previous by thread: Re: Re: confused about == vs === in this equality
  • Next by thread: Re: confused about == vs === in this equality