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. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe