streamly/examples/parallel-loops.hs
Harendra Kumar 7beefcec67 Fix examples
2017-08-24 03:07:14 +05:30

21 lines
616 B
Haskell

import Control.Applicative ((<|>), empty)
import Control.Concurrent (myThreadId, threadDelay)
import Control.Monad.IO.Class (liftIO)
import System.IO (stdout, hSetBuffering, BufferMode(LineBuffering))
import System.Random (randomIO)
import Asyncly
main = runAsyncly $ do
liftIO $ hSetBuffering stdout LineBuffering
x <- loop "A" <|> loop "B" <|> empty
liftIO $ myThreadId >>= putStr . show
>> putStr " "
>> print x
where
loop name = do
liftIO $ threadDelay 1000000
rnd <- liftIO (randomIO :: IO Int)
return (name, rnd) <|> loop name <|> empty