Front page | perl.perl6.language | Postings from October 2001

## Re: NaN semantics

From:
RaFaL Pocztarski
Date:
October 7, 2001 13:22
Subject:
Re: NaN semantics
Message ID:
```Tim Conrow wrote:

> Damian Conway said:
>    > > >       print "Inflation rate: " and \$inflation = +<>
>    > > >                             until \$inflation != NaN;
>    > >
>    > > This requires that C<NaN != NaN> be false, causing the loop to
>    > > continue until a valid numeric string is entered.
>
> > Err. Are you *sure*? That's an C<until>, not a C<while>, you realize?
>
> Yes. I had to use all my fingers and toes to keep everything straight,
> but I think I did. :-) In the semantics you show (different from IEEE
> semantics) "NaN==NaN" is true, so "NaN!=NaN" is false, which is why the
> loop continues until a valid number is entered.

Hi,

This is my first post here, so don't laugh if I say something stupid. :)

I haven't got any contact with NaN before, but when Tim pointed that
NaN!=NaN is true in IEEE I thought that it does make sense. I see pros
and cons and it's not so ugly and non-intuitive as it can look. When
comparing \$a and \$b as numbers there is no need for \$a==\$b!=NaN, if
NaN!=NaN then \$a==\$b is ok for any values of \$a and \$b, it would be true
only if \$a and \$b are numbers and they are equal. If NaN==NaN is true,
then the longer \$a==\$b!=NaN is needed. So when comparing two scalars as
numbers NaN!=NaN being true makes it easier. But then "until \$inflation
!= NaN" would be useless as NaN!=anything is always true (NaN!=NaN, and
NaN!=anynumber). With NaN!=NaN some other way like \$x.isNaN or \$x.isnum
would be needed. Or maybe NaN evaluates to 'NaN' in string context and
+\$x eq 'NaN' (or +\$x eq NaN) could be used? NaN==NaN being false is in
fact very intuitive for me, as NaN is something without any numerical
meaning, so numerically compared to anything doesn't make sense (as ==
means numerical equality, not just equality). Maybe it should be undef

So OK, tell me if I get it right, and how (and why) it will look in Perl
6. From Exegesis I see that NaN==NaN, but that's not stated in
Apocalypse (or I just missed it).

BTW, I really like the direction of Perl 6 development, all of you are
doing really great job here. I was very surprised when I saw the
negative feedback on Slashdot, and I thought that if my enthusiasm is so
abnormal, than maybe it's a sign that I should join your team. :)
Really, I'd love to help with Perl 6 development if I can be useful
somehow.