
4 Apr
2007
4 Apr
'07
6 p.m.
Marc Weber:
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:
main = do hSetBuffering stdin NoBuffering hGetContents stdin >>= mapM_ (\c -> addTimeCode c >>= handleChar)