simple-pipe 0.0.0.20 → 0.0.0.21
raw patch · 4 files changed
+40/−34 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.Pipe.ByteString: fromFileLn :: (PipeClass p, MonadBaseControl IO m, MonadTrans (p i ByteString), MonadBaseControl IO (p i ByteString m)) => FilePath -> p i ByteString m ()
+ Data.Pipe.ByteString: fromFileLn :: (PipeClass p, MonadBaseControl IO m, MonadTrans (p i ByteString), Monad (p i ByteString m)) => FilePath -> p i ByteString m ()
- Data.Pipe.ByteString: fromHandle :: (PipeClass p, Monad m, MonadBaseControl IO (p i ByteString m)) => Handle -> p i ByteString m ()
+ Data.Pipe.ByteString: fromHandle :: (PipeClass p, MonadBase IO m, MonadTrans (p i ByteString), Monad (p i ByteString m)) => Handle -> p i ByteString m ()
- Data.Pipe.ByteString: fromHandleLn :: (PipeClass p, Monad m, MonadBaseControl IO (p i ByteString m)) => Handle -> p i ByteString m ()
+ Data.Pipe.ByteString: fromHandleLn :: (PipeClass p, MonadBase IO m, MonadTrans (p i ByteString), Monad (p i ByteString m)) => Handle -> p i ByteString m ()
- Data.Pipe.ByteString: toFileLn :: (PipeClass p, MonadBaseControl IO m, MonadTrans (p ByteString o), MonadBaseControl IO (p ByteString o m)) => FilePath -> p ByteString o m ()
+ Data.Pipe.ByteString: toFileLn :: (PipeClass p, MonadBaseControl IO m, MonadTrans (p ByteString o), Monad (p ByteString o m)) => FilePath -> p ByteString o m ()
- Data.Pipe.ByteString: toHandle :: (PipeClass p, Monad m, MonadBaseControl IO (p ByteString o m)) => Handle -> p ByteString o m ()
+ Data.Pipe.ByteString: toHandle :: (PipeClass p, MonadBase IO m, MonadTrans (p ByteString o), Monad (p ByteString o m)) => Handle -> p ByteString o m ()
- Data.Pipe.ByteString: toHandleLn :: (PipeClass p, Monad m, MonadBaseControl IO (p ByteString o m)) => Handle -> p ByteString o m ()
+ Data.Pipe.ByteString: toHandleLn :: (PipeClass p, MonadBase IO m, MonadTrans (p ByteString o), Monad (p ByteString o m)) => Handle -> p ByteString o m ()
- Data.Pipe.IO: debug :: (PipeClass p, Monad m, MonadBaseControl IO (p a a m), Show a) => p a a m ()
+ Data.Pipe.IO: debug :: (PipeClass p, MonadBase IO m, MonadTrans (p a a), Monad (p a a m), Show a) => p a a m ()
- Data.Pipe.IO: fromFile :: (PipeClass p, MonadBaseControl IO m, MonadTrans (p i Char), MonadBaseControl IO (p i Char m)) => FilePath -> p i Char m ()
+ Data.Pipe.IO: fromFile :: (PipeClass p, MonadBaseControl IO m, MonadTrans (p i Char), Monad (p i Char m)) => FilePath -> p i Char m ()
- Data.Pipe.IO: fromHandle :: (PipeClass p, Monad m, MonadBaseControl IO (p i Char m)) => Handle -> p i Char m ()
+ Data.Pipe.IO: fromHandle :: (PipeClass p, MonadBase IO m, MonadTrans (p i Char), Monad (p i Char m)) => Handle -> p i Char m ()
- Data.Pipe.IO: toFile :: (PipeClass p, MonadIO m, MonadBaseControl IO m, MonadTrans (p Char o), MonadBaseControl IO (p Char o m)) => FilePath -> p Char o m ()
+ Data.Pipe.IO: toFile :: (PipeClass p, MonadBaseControl IO m, MonadTrans (p Char o), Monad (p Char o m)) => FilePath -> p Char o m ()
- Data.Pipe.IO: toHandle :: (PipeClass p, Monad m, MonadBaseControl IO (p Char o m)) => Handle -> p Char o m ()
+ Data.Pipe.IO: toHandle :: (PipeClass p, MonadBase IO m, MonadTrans (p Char o), Monad (p Char o m)) => Handle -> p Char o m ()
- Data.Pipe.TChan: fromTChan :: MonadBaseControl IO m => TChan a -> Pipe () a m ()
+ Data.Pipe.TChan: fromTChan :: (PipeClass p, MonadBase IO m, MonadTrans (p x a), Monad (p x a m)) => TChan a -> p x a m ()
- Data.Pipe.TChan: fromTChans :: MonadBaseControl IO m => [TChan a] -> Pipe () a m ()
+ Data.Pipe.TChan: fromTChans :: (PipeClass p, MonadBase IO m, MonadTrans (p x a), Monad (p x a m)) => [TChan a] -> p x a m ()
- Data.Pipe.TChan: toTChan :: MonadBaseControl IO m => TChan a -> Pipe a () m ()
+ Data.Pipe.TChan: toTChan :: (PipeClass p, MonadBase IO m, MonadTrans (p a x), Monad (p a x m)) => TChan a -> p a x m ()
Files
- simple-pipe.cabal +2/−2
- src/Data/Pipe/ByteString.hs +18/−15
- src/Data/Pipe/IO.hs +14/−13
- src/Data/Pipe/TChan.hs +6/−4
simple-pipe.cabal view
@@ -2,7 +2,7 @@ cabal-version: >= 1.8 name: simple-pipe-version: 0.0.0.20+version: 0.0.0.21 stability: Experimental author: Yoshikuni Jujo <PAF01143@nifty.ne.jp> maintainer: Yoshikuni Jujo <PAF01143@nifty.ne.jp>@@ -80,7 +80,7 @@ source-repository this type: git location: git://github.com/YoshikuniJujo/simple-pipe.git- tag: simple-pipe-0.0.0.20+ tag: simple-pipe-0.0.0.21 library hs-source-dirs: src
src/Data/Pipe/ByteString.hs view
@@ -19,41 +19,44 @@ bufferSize :: Int bufferSize = 65536 -fromHandleLn :: (PipeClass p, Monad m,- MonadBaseControl IO (p i BSC.ByteString m)) =>+fromHandleLn :: (PipeClass p, MonadBase IO m,+ MonadTrans (p i BSC.ByteString), Monad (p i BSC.ByteString m)) => Handle -> p i BSC.ByteString m () fromHandleLn h = do- ml <- liftBase $ (Just <$> BSC.hGetLine h) `catch` \(e :: IOException) ->+ ml <- lift . liftBase $+ (Just <$> BSC.hGetLine h) `catch` \(e :: IOException) -> case ioe_type e of EOF -> return Nothing _ -> ioException e maybe (return ()) ((>> fromHandleLn h) . yield) ml -toHandleLn :: (PipeClass p, Monad m, MonadBaseControl IO (p BSC.ByteString o m)) =>+toHandleLn :: (PipeClass p, MonadBase IO m,+ MonadTrans (p BSC.ByteString o), Monad (p BSC.ByteString o m)) => Handle -> p BSC.ByteString o m ()-toHandleLn h =- await >>= maybe (return ()) ((>> toHandleLn h) . liftBase . BSC.hPutStrLn h)+toHandleLn h = await >>= maybe (return ())+ ((>> toHandleLn h) . lift . liftBase . BSC.hPutStrLn h) fromFileLn :: (PipeClass p, MonadBaseControl IO m,- MonadTrans (p i BSC.ByteString),- MonadBaseControl IO (p i BSC.ByteString m)) =>+ MonadTrans (p i BSC.ByteString), Monad (p i BSC.ByteString m)) => FilePath -> p i BSC.ByteString m () fromFileLn fp = bracket (liftBase $ openFile fp ReadMode) (liftBase . hClose) fromHandleLn toFileLn :: (PipeClass p, MonadBaseControl IO m,- MonadTrans (p BSC.ByteString o),- MonadBaseControl IO (p BSC.ByteString o m)) =>+ MonadTrans (p BSC.ByteString o), Monad (p BSC.ByteString o m)) =>+-- MonadIO (p BSC.ByteString o m)) => FilePath -> p BSC.ByteString o m () toFileLn fp = bracket (liftBase $ openFile fp WriteMode) (liftBase . hClose) toHandleLn -fromHandle ::- (PipeClass p, Monad m, MonadBaseControl IO (p i BSC.ByteString m)) =>+fromHandle :: (PipeClass p, MonadBase IO m,+ MonadTrans (p i BSC.ByteString), Monad (p i BSC.ByteString m)) => Handle -> p i BSC.ByteString m ()-fromHandle h = liftBase (BS.hGetSome h bufferSize) >>= yield >> fromHandle h+fromHandle h = lift (liftBase $ BS.hGetSome h bufferSize) >>= yield >> fromHandle h -toHandle :: (PipeClass p, Monad m, MonadBaseControl IO (p BSC.ByteString o m)) =>+toHandle :: (PipeClass p, MonadBase IO m,+ MonadTrans (p BSC.ByteString o), Monad (p BSC.ByteString o m)) => Handle -> p BSC.ByteString o m ()-toHandle h = await >>= maybe (return ()) ((>> toHandleLn h) . liftBase . BSC.hPut h)+toHandle h = await >>= maybe (return ())+ ((>> toHandle h) . lift . liftBase . BSC.hPut h)
src/Data/Pipe/IO.hs view
@@ -12,29 +12,30 @@ import System.IO import GHC.IO.Exception -fromHandle :: (PipeClass p, Monad m, MonadBaseControl IO (p i Char m)) =>- Handle -> p i Char m ()+fromHandle :: (PipeClass p, MonadBase IO m,+ MonadTrans (p i Char), Monad (p i Char m)) => Handle -> p i Char m () fromHandle h = do- mc <- liftBase $ (Just <$> hGetChar h) `catch` \(e :: IOException) ->+ mc <- lift . liftBase $ (Just <$> hGetChar h) `catch` \(e :: IOException) -> case ioe_type e of EOF -> return Nothing _ -> ioException e maybe (return ()) ((>> fromHandle h) . yield) mc -toHandle :: (PipeClass p, Monad m, MonadBaseControl IO (p Char o m)) =>- Handle -> p Char o m ()-toHandle h = await >>= maybe (return ()) ((>> toHandle h) . liftBase . hPutChar h)+toHandle :: (PipeClass p, MonadBase IO m,+ MonadTrans (p Char o), Monad (p Char o m)) => Handle -> p Char o m ()+toHandle h = await >>= maybe (return ())+ ((>> toHandle h) . lift . liftBase . hPutChar h) fromFile :: (PipeClass p, MonadBaseControl IO m,- MonadTrans (p i Char), MonadBaseControl IO (p i Char m)) =>- FilePath -> p i Char m ()+ MonadTrans (p i Char), Monad (p i Char m)) => FilePath -> p i Char m () fromFile fp = bracket (liftBase $ openFile fp ReadMode) (liftBase . hClose) fromHandle -toFile :: (PipeClass p, MonadIO m, MonadBaseControl IO m,- MonadTrans (p Char o), MonadBaseControl IO (p Char o m)) =>- FilePath -> p Char o m ()+toFile :: (PipeClass p, MonadBaseControl IO m,+ MonadTrans (p Char o), Monad (p Char o m)) => FilePath -> p Char o m () toFile fp = bracket (liftBase $ openFile fp WriteMode) (liftBase . hClose) toHandle -debug :: (PipeClass p, Monad m, MonadBaseControl IO (p a a m), Show a) => p a a m ()-debug = await >>= maybe (return ()) (\x -> liftBase (print x) >> yield x >> debug)+debug :: (PipeClass p, MonadBase IO m,+ MonadTrans (p a a), Monad (p a a m), Show a) => p a a m ()+debug = await >>= maybe (return ())+ (\x -> lift (liftBase $ print x) >> yield x >> debug)
src/Data/Pipe/TChan.hs view
@@ -6,15 +6,16 @@ import Control.Applicative import "monads-tf" Control.Monad.Trans-import Control.Monad.Trans.Control import Control.Monad.Base import Control.Concurrent.STM import Data.Pipe -fromTChan :: MonadBaseControl IO m => TChan a -> Pipe () a m ()+fromTChan :: (PipeClass p, MonadBase IO m,+ MonadTrans (p x a), Monad (p x a m)) => TChan a -> p x a m () fromTChan c = lift (liftBase . atomically $ readTChan c) >>= yield >> fromTChan c -fromTChans :: MonadBaseControl IO m => [TChan a] -> Pipe () a m ()+fromTChans :: (PipeClass p, MonadBase IO m,+ MonadTrans (p x a), Monad (p x a m)) => [TChan a] -> p x a m () fromTChans cs = (>> fromTChans cs) . (yield =<<) . lift . liftBase . atomically $ do readTChans cs >>= maybe retry return @@ -24,6 +25,7 @@ e <- isEmptyTChan c if e then readTChans cs else Just <$> readTChan c -toTChan :: MonadBaseControl IO m => TChan a -> Pipe a () m ()+toTChan :: (PipeClass p, MonadBase IO m,+ MonadTrans (p a x), Monad (p a x m)) => TChan a -> p a x m () toTChan c = await >>= maybe (return ()) ((>> toTChan c) . lift . liftBase . atomically . writeTChan c)