[Haskell-cafe] instance Enum Double considered not entirely great?
daniel.is.fischer at googlemail.com
Wed Sep 21 00:21:39 CEST 2011
On Tuesday 20 September 2011, 23:56:53, Evan Laforge wrote:
> > I actually think the brokenness of Ord for floating point values is
> > worse in many ways, as demonstrated by the ability to insert a value
> > into a Data.Set.Set and have other values "disappear" from the set as
> > a result. Getting an unexpected element in a list doesn't really seem
> > as bad as silently corrupting entire data structures.
> Whoah, that's scary. What are some examples of this happening? Does
> this mean it's unsafe to store Doubles in a Map?
Too lazy to work out the details, but since
NaN ? x = False
for ? any of <, >, <=, >=, (==, /=) and compare is defined on terms of
these, all results of compare involving a NaN are GT.
member and insert in Data.set use compare to find out where to go, so
inserting NaNs puts them at the max position. Insert a couple, and
rebalancing can put one above non-NaN values, oops.
More information about the Haskell-Cafe