On 11 Jan 2008, at 10:12 AM, Achim Schneider wrote:

David Roundy <[EMAIL PROTECTED]> wrote:

Prelude> let x=1e-300/1e300
Prelude> x
0.0
Prelude> x/x
NaN

The "true" answer here is that x/x == 1.0 (not 0 or +Infinity), but
there's no way for the computer to know this, so it's NaN.

Didn't catch this the first time around, but: only to a physicist. (I mean no disrespect to the author of darcs, but nevertheless the point stands). Back in the real world, 0 / 0 may be defined arbitrarily, or left undefined. (Defining it breaks the wonderful property that, if lim (xn) = x, lim (yn) = y, and x/y = z, then lim (xn / yn) = z. This is considered a Bad Thing by real mathematicians). In fact, in integration theory 0 * inf = 0 for certain 'multiplications', which gives the lie to 0 / 0.


Weeeeeeeelllllllll...... math philosophy, Ok.

You can't divide something in a way that uses no slices. You just don't
cut, if you cut zero times. Which is what you do when you divide by
one, mind you, not when you divide by zero. Division by [1..0] equals
multiplication by [1..].

Right.  (Although 0 * inf is defined by fiat, as noted above).

You can't get to the end of either spectrum,
just axiomatically dodge around the singularities to axiomatically
connect the loose ends.

`Axiomatically' --- you mean by re-defining standard notation like * and / to mean what you need in this case. I think this is a different thing than setting up ZFC so everyone agrees on what a `set' is from henceforth.

There is no true answer here, the question is wrong.

Exactly.

jcc

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to