diff -r 1760b7d150cf -r 400d49213290 src/System/IO/Streams/Concurrent/Unagi/Bounded.hs --- a/src/System/IO/Streams/Concurrent/Unagi/Bounded.hs Tue Dec 09 13:37:21 2014 -0600 +++ b/src/System/IO/Streams/Concurrent/Unagi/Bounded.hs Thu Dec 18 10:56:53 2014 -0600 @@ -6,17 +6,14 @@ , chanToInput , chanToOutput , makeChanPipe - , dupStream - , DupHandle ) where ------------------------------------------------------------------------------ -import Control.Applicative (pure, (<$>), (<*>)) +import Control.Applicative ((<$>), (<*>)) import Control.Concurrent.Chan.Unagi.Bounded (InChan, OutChan, - dupChan, newChan, - readChan, writeChan) -import Control.Monad ((>=>)) + newChan, readChan, + writeChan) import Prelude hiding (read) import System.IO.Streams.Internal (InputStream, OutputStream, @@ -24,8 +21,6 @@ makeOutputStream, read) -newtype DupHandle a = DupHandle { unDupHandle :: InChan (Maybe a) } - ------------------------------------------------------------------------------ -- | Writes the contents of an input stream to a channel until the input stream -- yields end-of-stream. @@ -58,15 +53,7 @@ -- -- Since reading from the 'InputStream' and writing to the 'OutputStream' are -- blocking calls, be sure to do so in different threads. -makeChanPipe :: Int -> IO (InputStream a, OutputStream a, DupHandle a) +makeChanPipe :: Int -> IO (InputStream a, OutputStream a) makeChanPipe size = do (inChan, outChan) <- newChan size - (,,) <$> chanToInput outChan <*> chanToOutput inChan <*> pure (DupHandle inChan) - - ------------------------------------------------------------------------------- --- | Use a 'DupHandle' to replicate everything written on the --- associated 'OutputStream' to the 'InputStream'. --- -dupStream :: DupHandle a -> IO (InputStream a) -dupStream = dupChan . unDupHandle >=> chanToInput + (,) <$> chanToInput outChan <*> chanToOutput inChan