|
[Date Index]
[Thread Index]
[Author Index]
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
|