[Haskell-cafe] Tracking characters and a timestamp ?
Bulat Ziganshin
bulat.ziganshin at gmail.com
Wed Apr 4 18:58:54 EDT 2007
Hello Matthew,
Thursday, April 5, 2007, 2:00:03 AM, you wrote:
>> main = do
>> hSetBuffering stdin NoBuffering
>> hGetContents stdin >>= mapM addTimeCode >>= mapM_ handleChar
>>
>> It seems to wait till the end of the infinite list. Why?
> The sequencing imposed by the IO monad means that the first mapM must
> complete before the second can start. To see this, you can try the
> following:
or, alternatively, replace first mapM_ with unsafeInterleavedMapM:
unsafeInterleavedMapM f (x:xs) = do a <- f x
as <- unsafeInterleaveIO (unsafeInterleavedMapM f xs)
return (a:as)
(not tested)
--
Best regards,
Bulat mailto:Bulat.Ziganshin at gmail.com
More information about the Haskell-Cafe
mailing list