-- -- Concurrent Haskell for beginners -- import Random(randomRIO) import Concurrent forN :: Int-> IO a-> IO () forN n a = if n== 0 then return () else a >> forN (n-1) a echo :: MVar ()-> String-> IO () echo flag p = do takeMVar flag putStrLn ("Please enter line "++p) line <- getLine putMVar flag () randomRIO (1,100) >>= \n-> forN n (putStr (p++ line)) yield echo flag p main :: IO () main = do flag <- newMVar () forkIO (echo flag "1") >> echo flag "2"