But

Prelude Data.List> [1,1+2/3..4] :: [Double]
[1.0,1.6666666666666665,2.333333333333333,2.9999999999999996,3.666666666666666,4.333333333333332]

Prelude Data.List> unfoldr (\n -> let n'=n+2/3 in if n' <= 4 then Just
(n',n') else Nothing) 1 :: [Double]
[1.6666666666666665,2.333333333333333,2.9999999999999996,3.666666666666666]

Prelude Data.List> takeWhile (<=4) $ iterate (+2/3) 1 :: [Double]
[1.0,1.6666666666666665,2.333333333333333,2.9999999999999996,3.666666666666666]

How 'dodgy' it should be to produce different result?
How [a,b..c] works in this case?

>
>
> 2010/5/19 Ivan Lazar Miljenovic <[email protected]>:
>> Dmitry Olshansky <[email protected]> writes:
>>
>>> Hello all,
>>>
>>> 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
>>>
>>> Prelude> [1,1+2/3..10]
>>> [1.0,1.6666666666666665,2.333333333333333,2.9999999999999996,3.666666666666666,4.333333333333332,4.999999999999998,5.666666666666664,6.33333333333333,6.9999999999999964,7.6666666666666625,8.333333333333329,8.999999999999995,9.66666666666666,10.333333333333327]
>>>
>>> -- It is a bug!
>>
>> No it isn't, because of the dodgy Ord instance for Float and Double values.
>>
>> --
>> Ivan Lazar Miljenovic
>> [email protected]
>> IvanMiljenovic.wordpress.com
>>
>
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to