[Haskell-cafe] Bug with [Double]
Roman Leshchinskiy
rl at cse.unsw.edu.au
Wed May 19 10:22:32 EDT 2010
On 19/05/2010, at 23:44, Ben Millwood wrote:
> On Wed, May 19, 2010 at 10:57 AM, Serguey Zefirov <sergueyz at gmail.com> wrote:
>>
>> PS
>> Rationals:
>> Prelude> [1,1+2/3..10] :: [Rational]
>> [1 % 1,5 % 3,7 % 3,3 % 1,11 % 3,13 % 3,5 % 1,17 % 3,19 % 3,7 % 1,23 %
>> 3,25 % 3,9 % 1,29 % 3,31 % 3]
>>
>> Same result.
>
> This sounds like a bug to me. The section of the Haskell Report that
> deals with the Enum class mentions Float and Double, not Rational, and
> there's really no sensible reason why Rationals would exhibit this
> behaviour given that they don't have rounding error.
From Section 12.1 of the Library Report:
instance (Integral a) => Enum (Ratio a) where
succ x = x+1
pred x = x-1
toEnum = fromIntegral
fromEnum = fromInteger . truncate -- May overflow
enumFrom = numericEnumFrom -- These numericEnumXXX functions
enumFromThen = numericEnumFromThen -- are as defined in Prelude.hs
enumFromTo = numericEnumFromTo -- but not exported from it!
enumFromThenTo = numericEnumFromThenTo
The numericEnum functions are defined in Section 8 of the Language Report and have semantics required for Float and Double.
Roman
More information about the Haskell-Cafe
mailing list