module Merge
(
- mergeIO, --:: [a] -> [a] -> IO [a]
- nmergeIO --:: [[a]] -> IO [a]
+ mergeIO, -- :: [a] -> [a] -> IO [a]
+ nmergeIO -- :: [[a]] -> IO [a]
) where
import Semaphore
-import ConcBase
-import STBase ( unsafeInterleavePrimIO )
-import IOBase
+import PrelConc
+import PrelIOBase
max_buff_size = 1
waitQSem e >>
takeMVar tail_list >>= \ node ->
newEmptyMVar >>= \ next_node ->
- unsafeInterleavePrimIO ( ioToPrimIO $
+ unsafeInterleaveIO (
takeMVar next_node >>= \ x ->
signalQSem e >>
- return x) `thenIO_Prim` \ next_node_val ->
+ return x) >>= \ next_node_val ->
putMVar node (x:next_node_val) >>
putMVar tail_list next_node >>
suckIO branches_running buff xs