@@ -3,17 +3,18 @@ module Main where
33
44import Criterion.Main (defaultMain, bgroup, bench, nfIO)
55import Control.Exception (assert)
6+import Control.Monad.IO.Class (MonadIO (liftIO))
67--
78-- import Fusion as F hiding ((&))
89import Data.Function ((&))
910
10−import Data.Conduit as C
11−import Data.Conduit.Combinators as C
12−import Pipes as P
11+import qualified Data.Conduit as C
12+import qualified Data.Conduit.Combinators as C
13+import qualified Pipes as P
1314import qualified Pipes.Prelude as P
1415import qualified Streaming.Prelude as Str
1516import qualified System.IO.Streams as IOS
16−import Conduit.Simple as S
17+import qualified Conduit.Simple as S
1718
1819-- Transient
1920import Control.Monad (guard)
@@ -21,11 +22,11 @@ import Control.Applicative (Alternative)
2122import Data.IORef (IORef, newIORef, writeIORef)
2223import Data.Atomics (atomicModifyIORefCAS)
2324import System.IO.Unsafe (unsafePerformIO)
24−import Transient.Internals as T
25−import Transient.Indeterminism as T
25+import qualified Transient.Internals as T
26+import qualified Transient.Indeterminism as T
2627
27−import Data.Machine as M
28−import Asyncly as A
28+import qualified Data.Machine as M
29+import qualified Asyncly as A
2930
3031main :: IO ()
3132main = do
@@ -63,13 +64,13 @@ drop num x = do
6364 guard mn
6465 return x
6566
66−tmap :: (a -> Int) -> a -> TransIO Int
67+tmap :: (a -> Int) -> a -> T.TransIO Int
6768tmap = Main.map
6869
69−tfilter :: (a -> Bool) -> a -> TransIO a
70+tfilter :: (a -> Bool) -> a -> T.TransIO a
7071tfilter = Main.filter
7172
72−tdrop :: Int -> Int -> TransIO Int
73+tdrop :: Int -> Int -> T.TransIO Int
7374tdrop = Main.drop
7475
7576transient_basic :: IO Int
@@ -86,19 +87,19 @@ transient_basic = T.keep' $ T.threads 0 $ do
8687 assert (Prelude.length xs == 499000) $
8788 T.exit (Prelude.length xs)
8889
89−amap :: (a -> Int) -> a -> AsynclyT IO Int
90+amap :: (a -> Int) -> a -> A.AsynclyT IO Int
9091amap = Main.map
9192
92−afilter :: (a -> Bool) -> a -> AsynclyT IO a
93+afilter :: (a -> Bool) -> a -> A.AsynclyT IO a
9394afilter = Main.filter
9495
95−adrop :: Int -> Int -> AsynclyT IO Int
96+adrop :: Int -> Int -> A.AsynclyT IO Int
9697adrop = Main.drop
9798
9899asyncly_basic :: IO Int
99100asyncly_basic = do
100101 writeIORef count 0
101− xs <- wait $ do
102+ xs <- A.toList $ do
102103 A.each [1..1000000 :: Int]
103104 >>= afilter even
104105 >>= amap (+1)
@@ -122,11 +123,11 @@ machines_basic = do
122123pipes_basic :: IO Int
123124pipes_basic = do
124125 xs <- P.toListM $ P.each [1..1000000]
125− >-> P.filter even
126− >-> P.map (+1)
127− >-> P.drop 1000
128− >-> P.map (+1)
129− >-> P.filter (\x -> x `mod` 2 == 0)
126+ P.>-> P.filter even
127+ P.>-> P.map (+1)
128+ P.>-> P.drop 1000
129+ P.>-> P.map (+1)
130+ P.>-> P.filter (\x -> x `mod` 2 == 0)
130131 assert (Prelude.length xs == 499000) $
131132 return (Prelude.length (xs ::[Int]))
132133