Jonathan Cast <[EMAIL PROTECTED]> wrote: > 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.
whereas lim( 0 ) * lim( inf ) is anything you want, or, more precisely, the area of the thing you started with. It's like taking seven balls, assembling them into a hexagon and claiming it's a circle. Such things just "happen" if you are working with pure abstractions. -- (c) this sig last receiving data processing entity. Inspect headers for past copyright information. All rights reserved. Unauthorised copying, hiring, renting, public performance and/or broadcasting of this signature prohibited. _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
