@@ -7,7 +7,6 @@ import Control.Monad (when)
7import Control.Applicative (ZipList(..))
7import Control.Applicative (ZipList(..))
8import Control.Concurrent (MVar, takeMVar, putMVar, newEmptyMVar)
8import Control.Concurrent (MVar, takeMVar, putMVar, newEmptyMVar)
9import Control.Monad (replicateM, replicateM_)
9import Control.Monad (replicateM, replicateM_)
10−import Control.Monad.IO.Class (liftIO)
11import Data.List (sort, foldl', scanl')
10import Data.List (sort, foldl', scanl')
12import GHC.Word (Word8)
11import GHC.Word (Word8)
@@ -121,7 +120,7 @@ sourceUnfoldrM mv n = A.unfoldrM step 0
121 if cnt > fromIntegral n
120 if cnt > fromIntegral n
122 then return Nothing
121 then return Nothing
124− liftIO $ dbgMVar ("put sourceUnfoldrM " ++ msg) (putMVar mv ())
123+ dbgMVar ("put sourceUnfoldrM " ++ msg) (putMVar mv ())
125 return (Just (fromIntegral cnt, cnt + 1))
124 return (Just (fromIntegral cnt, cnt + 1))
127concurrentUnfoldrM
126concurrentUnfoldrM
@@ -142,15 +141,16 @@ concurrentUnfoldrM eq op n =
142 A.toList $ do
141 A.toList $ do
143 x <- op (sourceUnfoldrM mv n)
142 x <- op (sourceUnfoldrM mv n)
144 let msg = show x ++ "/" ++ show n
143 let msg = show x ++ "/" ++ show n
145− if even x
145+ if even x
147− liftIO $ dbgMVar ("first take concurrentUnfoldrM " ++ msg)
147+ dbgMVar ("first take concurrentUnfoldrM " ++ msg)
150− then liftIO $ dbgMVar ("second take concurrentUnfoldrM " ++ msg)
151 (takeMVar mv)
148 (takeMVar mv)
150+ then dbgMVar ("second take concurrentUnfoldrM " ++ msg)
152 else return ()
153 else return ()
155 equals eq stream list
155 equals eq stream list