[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: simple question about NaN and FP exceptions
- From: Renato Maia <maia@...>
- Date: Tue, 22 Feb 2011 14:41:46 -0300
On 21 Feb 2011, at 18:37, Dirk Laurie wrote:
(a) NaN is to numbers what nil is to Lua values: not-a-number vs
not-a-value. It makes intuitive sense that it should be
logically
different from numbers.
OK, but why this implies NaN should evaluate to false? Apparently, Lua
authors regret that nil evaluates to false [1]: "Not introducing
booleans from the start had a few unfortunate side-effects. One is
that we now have two false values: nil and false.". Lately, I've
become a little more inclined to agree with them in this particular
aspect because I seems to me it brings more confusion than actual
benefits.
(b) The implementation, as Tony has shown, requires a minimal
change to the Lua source code.
Most times, the implementation is the easiest part. A harder part is
to reason about all the subtle implications of these apparently
innocent changes.
(c) It would allow elegant error-checking code like
x=assert(x-f(x)/df(x), "NaN in Newton iteration, maybe a multiple
zero?")
If you want to check for NaN or nil, why not doing it explicitly:
function assertnumber(value, ....)
if type(value) ~= "number" or value ~= value then
error(...)
end
return value, ....
end
[1] http://www.tecgraf.puc-rio.br/~lhf/ftp/doc/hopl.pdf
--
Renato Maia
Computer Scientist
Tecgraf/PUC-Rio
__________________________
http://www.inf.puc-rio.br/~maia/