Not lazy/smart enough

Hans Aberg haberg@matematik.su.se
Fri, 2 Nov 2001 12:17:30 +0100


At 11:17 +0100 2001/11/02, Lennart Augustsson wrote:
>Are you using projective or affine infinity?

At 10:26 +0000 2001/11/02, Simon Marlow wrote:
>I have absolutely no idea.  Which one should we be using?  How do we
>find out which one we are using?

My guess is that by "affine infinity" Lennart means +oo/-oo, but what you
are using in GHCi is what the FPU is producing, probably a NaN for every
computation it cannot perform. This NaN roughly corresponds to saying that
there has been an exception without specifying what it consist of (think of
the exception monad!).

I think the best approach would be to throw an exception by every
computation can cannot be computed, with an additional information of what
type the problem is (like divide by zero, square root of negative, etc).
Then on top of that can build new types with the desired behavior.

-- Thus, the basic floating point type should not have any infinities or
such (but throw an exception, or treat NaN as a thrown exception).

  Hans Aberg