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

Jan-Willem Maessen jmaessen at alum.mit.edu
Tue Feb 12 09:12:40 EST 2008


On Feb 12, 2008, at 1:50 AM, David Benbennick wrote:

> On Feb 11, 2008 10:18 PM, Uwe Hollerbach <uhollerbach at gmail.com>  
> wrote:
>> If I fire up ghci, import
>> Data.Ratio and GHC.Real, and then ask about the type of "infinity",  
>> it
>> tells me Rational, which as far as I can tell is Ratio Integer...?
>
> Yes, Rational is Ratio Integer.  It might not be a good idea to import
> GHC.Real, since it doesn't seem to be documented at
> http://www.haskell.org/ghc/docs/latest/html/libraries/.  If you just
> import Data.Ratio, and define
>
>> pinf :: Integer
>> pinf = 1 % 0
>
>> ninf :: Integer
>> ninf = (-1) % 0
>
> Then things fail the way you expect (basically, Data.Ratio isn't
> written to support infinity).  But it's really odd the way the
> infinity from GHC.Real works.  Anyone have an explanation?

An educated guess here: the value in GHC.Real is designed to permit  
fromRational to yield the appropriate high-precision floating value  
for infinity (exploiting IEEE arithmetic in a simple, easily- 
understood way).  If I'm right, it probably wasn't intended to be used  
as a Rational at all, nor to be exploited by user code.

-Jan-Willem Maessen



More information about the Haskell-Cafe mailing list