@@ -5,32 +5,32 @@ main = do
5 liftIO $ hSetBuffering stdout LineBuffering
5 liftIO $ hSetBuffering stdout LineBuffering
7 putStrLn $ "\nloopTail:\n"
7 putStrLn $ "\nloopTail:\n"
8− runAsyncly $ do
8+ runStreamT $ do
9 x <- loopTail 0
9 x <- loopTail 0
10 liftIO $ print (x :: Int)
10 liftIO $ print (x :: Int)
12 putStrLn $ "\nloopHead:\n"
12 putStrLn $ "\nloopHead:\n"
13− runAsyncly $ do
13+ runStreamT $ do
14 x <- loopHead 0
14 x <- loopHead 0
15 liftIO $ print (x :: Int)
15 liftIO $ print (x :: Int)
17 putStrLn $ "\nloopTailA:\n"
17 putStrLn $ "\nloopTailA:\n"
18− runAsyncly $ do
18+ runStreamT $ do
19 x <- loopTailA 0
19 x <- loopTailA 0
20 liftIO $ print (x :: Int)
20 liftIO $ print (x :: Int)
22 putStrLn $ "\nloopHeadA:\n"
22 putStrLn $ "\nloopHeadA:\n"
23− runAsyncly $ do
23+ runStreamT $ do
24 x <- loopHeadA 0
24 x <- loopHeadA 0
25 liftIO $ print (x :: Int)
25 liftIO $ print (x :: Int)
27 putStrLn $ "\ninterleave:\n"
27 putStrLn $ "\ninterleave:\n"
28− runAsyncly $ do
28+ runStreamT $ do
29 x <- return 0 <> return 1 <=> return 100 <> return 101
29 x <- return 0 <> return 1 <=> return 100 <> return 101
30 liftIO $ print (x :: Int)
30 liftIO $ print (x :: Int)
32 putStrLn $ "\nParallel interleave:\n"
32 putStrLn $ "\nParallel interleave:\n"
33− runAsyncly $ do
33+ runStreamT $ do
34 x <- return 0 <> return 1 <|> return 100 <> return 101
34 x <- return 0 <> return 1 <|> return 100 <> return 101
35 liftIO $ print (x :: Int)
35 liftIO $ print (x :: Int)
@@ -46,7 +46,7 @@ main = do
47 -- Generates a value and then loops. Can be used to generate an infinite
47 -- Generates a value and then loops. Can be used to generate an infinite
48 -- stream. Interleaves the generator and the consumer.
48 -- stream. Interleaves the generator and the consumer.
49− loopTail :: Int -> AsyncT IO Int
49+ loopTail :: Int -> StreamT IO Int
50 loopTail x = do
50 loopTail x = do
51 liftIO $ putStrLn "LoopTail..."
51 liftIO $ putStrLn "LoopTail..."
52 return x <> (if x < 3 then loopTail (x + 1) else empty)
52 return x <> (if x < 3 then loopTail (x + 1) else empty)
@@ -54,7 +54,7 @@ main = do
54 -- Loops and then generates a value. The consumer can run only after the
54 -- Loops and then generates a value. The consumer can run only after the
55 -- loop has finished. An infinite generator will not let the consumer run
55 -- loop has finished. An infinite generator will not let the consumer run
56 -- at all.
56 -- at all.
57− loopHead :: Int -> AsyncT IO Int
57+ loopHead :: Int -> StreamT IO Int
58 loopHead x = do
58 loopHead x = do
59 liftIO $ putStrLn "LoopHead..."
59 liftIO $ putStrLn "LoopHead..."
60 (if x < 3 then loopHead (x + 1) else empty) <> return x
60 (if x < 3 then loopHead (x + 1) else empty) <> return x
@@ -68,12 +68,12 @@ main = do
68 -- then the action on the right is also spawned concurrently. In other
68 -- then the action on the right is also spawned concurrently. In other
69 -- words, both actions may run concurrently based on the need.
69 -- words, both actions may run concurrently based on the need.
71− loopTailA :: Int -> AsyncT IO Int
71+ loopTailA :: Int -> StreamT IO Int
72 loopTailA x = do
72 loopTailA x = do
73 liftIO $ putStrLn "LoopTailA..."
73 liftIO $ putStrLn "LoopTailA..."
74 return x <| (if x < 3 then loopTailA (x + 1) else empty)
74 return x <| (if x < 3 then loopTailA (x + 1) else empty)
76− loopHeadA :: Int -> AsyncT IO Int
76+ loopHeadA :: Int -> StreamT IO Int
77 loopHeadA x = do
77 loopHeadA x = do
78 liftIO $ putStrLn "LoopHeadA..."
78 liftIO $ putStrLn "LoopHeadA..."
79 (if x < 3 then loopHeadA (x + 1) else empty) <| return x
79 (if x < 3 then loopHeadA (x + 1) else empty) <| return x