Thanks, it's clear now.
2010/5/19 Serguey Zefirov <[email protected]>: > 2010/5/19 Erik de Castro Lopo <[email protected]>: >> Dmitry Olshansky wrote: >> >>> It seems that I saw something like this in Cafe recevtly. But I am not >>> sure... >>> In GHC 6.12.1 (Platform 2010 on Windows Vista) I have >> >> <snip> >> >> >>> Any comments? >> >> The problem you point out is not a problem with Haskell, but a problem >> with the whole concept of floating point arithmetic as implemented on >> all modern CPUs. See: >> >> http://docs.sun.com/source/806-3568/ncg_goldberg.html >> >> You would have got similar problems with just about any language running >> on the same hardware. > > This is what used for Double list generation (Haskell Platform 2010): > -------------------------------------------------- > numericEnumFromThenTo :: (Ord a, Fractional a) => a -> a -> a -> [a] > numericEnumFromThenTo e1 e2 e3 > = takeWhile predicate (numericEnumFromThen e1 e2) > where > mid = (e2 - e1) / 2 > predicate | e2 >= e1 = (<= e3 + mid) > | otherwise = (>= e3 + mid) > -------------------------------------------------- > So normal C loop like for {double i = 1; i <= 10; i += 1+2/3) { > insert_list(i); } won't generate the same list, as Haskell does in > [1,1+2/3..10]. > > 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. > _______________________________________________ > Haskell-Cafe mailing list > [email protected] > http://www.haskell.org/mailman/listinfo/haskell-cafe > _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
