[Haskell-cafe] A question about "monad laws"

Luke Palmer lrpalmer at gmail.com
Tue Feb 12 13:49:53 EST 2008


2008/2/12 Uwe Hollerbach <uhollerbach at gmail.com>:
> Well... I dunno. Looking at the source to GHC.Real, I see
>
>  infinity, notANumber :: Rational
> infinity = 1 :% 0
> notANumber = 0 :% 0
>
>  This is actually the reason I imported GHC.Real, because just plain %
> normalizes the rational number it creates, and that barfs very quickly when
> the denominator is 0. But the values themselves look perfectly reasonable...
> no?

Ummm... I'm going to have to go with no.

In particular we can't have signed infinity represented like this and
maintain reasonable numeric laws:

  1/0 = 1/(-0) = (-1)/0

Rationals are defined not to have a zero denomiator, so I'll bet in
more than one place in Data.Ratio that assumption is made.

Luke


More information about the Haskell-Cafe mailing list