@@ -1,13 +1,13 @@
1−import Control.Applicative ((<|>))
1+import Control.Applicative ((<|>), empty)
2import Control.Concurrent (myThreadId, threadDelay)
2import Control.Concurrent (myThreadId, threadDelay)
3import Control.Monad.IO.Class (liftIO)
3import Control.Monad.IO.Class (liftIO)
4import System.IO (stdout, hSetBuffering, BufferMode(LineBuffering))
4import System.IO (stdout, hSetBuffering, BufferMode(LineBuffering))
5import System.Random (randomIO)
5import System.Random (randomIO)
6import Asyncly
6import Asyncly
8−main = wait_ $ do
8+main = runAsyncly $ do
9 liftIO $ hSetBuffering stdout LineBuffering
9 liftIO $ hSetBuffering stdout LineBuffering
10− x <- loop "A" <|> loop "B"
10+ x <- loop "A" <|> loop "B" <|> empty
11 liftIO $ myThreadId >>= putStr . show
11 liftIO $ myThreadId >>= putStr . show
12 >> putStr " "
12 >> putStr " "
13 >> print x
13 >> print x
@@ -17,4 +17,4 @@ main = wait_ $ do
17 loop name = do
17 loop name = do
18 liftIO $ threadDelay 1000000
18 liftIO $ threadDelay 1000000
19 rnd <- liftIO (randomIO :: IO Int)
19 rnd <- liftIO (randomIO :: IO Int)
20− return (name, rnd) <|> loop name
20+ return (name, rnd) <|> loop name <|> empty