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

Re: NaN semantics

Thread Previous | Thread Next
RaFaL Pocztarski
October 7, 2001 13:22
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.


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
instead of false?

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

- RaFaL Pocztarski,

Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About