Repair to floating point enumerations?
Simon Marlow
marlowsd at gmail.com
Wed Oct 22 06:11:54 EDT 2008
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
More information about the Libraries
mailing list