[Haskell-cafe] 0/0 > 1 == False
Jules Bean
jules at jellybean.co.uk
Thu Jan 10 05:02:42 EST 2008
Yitzchak Gale wrote:
> Mitar wrote:
>>> Why is 0/0 (which is NaN) > 1 == False and at the same time 0/0 < 1 ==
>>> False. This means that 0/0 == 1? No, because also 0/0 == 1 == False.
>>> I understand that proper mathematical behavior would be that as 0/0 is
>>> mathematically undefined that 0/0 cannot be even compared to 1.
>>> There is probably an implementation reason behind it, but do we really
>>> want such "hidden" behavior? Would not it be better to throw some kind
>>> of an error?
>
> Like nearly all programming languages, Haskell implements
> the standard IEEE behavior for floating point numbers.
> That leads to some mathematical infelicities that are
> especially irking to us in Haskell, but the consensus was
> that it is best to follow the standard.
Nitpick:
I think the haskell standard doesn't force you to implement IEEE
floating point.
Rather the haskell standard, for efficiency, permits you to reuse the
"native" floating point of your host system. Since most of us are using
haskell on top of IEEE C libraries / FPUs, most of us have IEEE floating
point behaviour.
Practically speaking, if you want different semantics from what the bare
metal gives you, you have to wrap all kinds of things which would
otherwise be directly compiled to opcodes, which robs you of any chance
of getting the good performance you would hope for.
Jules
More information about the Haskell-Cafe
mailing list