15 lines
424 B
Haskell
15 lines
424 B
Haskell
import Control.Concurrent
|
|
import Control.Concurrent.MVar
|
|
|
|
main =
|
|
do lineVar <- newEmptyMVar
|
|
countVar <- newEmptyMVar
|
|
|
|
let takeLine = takeMVar lineVar
|
|
putLine = putMVar lineVar . Just
|
|
putEOF = putMVar lineVar Nothing
|
|
takeCount = takeMVar countVar
|
|
putCount = putMVar countVar
|
|
|
|
forkIO $ writer takeLine putCount
|
|
reader putLine putEOF takeCount
|