Repair to floating point enumerations?

Neil Mitchell ndmitchell at gmail.com
Tue Dec 9 11:37:58 EST 2008


Hi

Bringing up an old thread, but this issue just bit me in real life:

[0, 2.5 .. 3.75 ] = [0, 2.5, 5.0]

I was comparative testing some C++ and some Haskell, and its a shame
when its the Haskell that is clearly wrong! I don't think any end
decision was reached in this thread, but I think this is sufficiently
incorrect to call the Haskell 98 behaviour a bug.

Thanks

Neil

On Wed, Oct 22, 2008 at 10:11 AM, Simon Marlow <marlowsd at gmail.com> wrote:
> Malcolm Wallace wrote:
>
>> Phil proposes that, although retaining the instances of Enum for Float
>> and Double, we simplify the definitions of the numericEnumFrom family:
>>
>>  numericEnumFromThenTo   :: (Fractional a, Ord a) => a -> a -> a -> [a]
>>  numericEnumFrom         =  iterate (+1)
>>  numericEnumFromThen n m =  iterate (+(m-n)) n
>>  numericEnumFromTo n m   =  takeWhile (<= m) (numericEnumFrom n)
>>  numericEnumFromThenTo n m p = takeWhile (<= p) (numericEnumFromThen n m)
>
> I'll leave it to the floating-point experts to decide exactly what to do
> here for Haskell' (but I note that David Roundy's version looks better than
> the iterate version above, because the errors won't accumulate).
>
>> But as maintainer and bug-fixer of the Haskell'98 Report, I have also
>> been asked whether we should make this change retrospectively to the
>> Haskell'98 language (as a "typo").  Since it involves not merely an
>> ordinary library function, but a Prelude function, and moreover a
>> function that is used in the desugaring of syntax, it is less clear to
>> me whether to alter Haskell'98.
>
> We definitely can't make breaking changes to Haskell 98; this would be much
> more than a "typo".
>
> However, this does give us a problem if we decide to make a change here for
> H', as Neil points out, because there would be two mutually-incompatible
> instances for Enum Float.  We'd need to have a clear distinction between
> programs that are Haskell 98 and those that are not, with only the former
> allowed to use the haskell98 package.
>
> Cheers,
>        Simon
>
> _______________________________________________
> Haskell-prime mailing list
> Haskell-prime at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-prime
>


More information about the Haskell-prime mailing list