-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | simple pipeline library like conduit -- -- examples/upperFile.hs -- --
-- import Data.Pipe -- import Data.Char -- import System.IO -- import "monads-tf" Control.Monad.Trans -- -- main :: IO () -- main = do -- _ <- runPipe $ readFileP "sample.txt" -- =$= takeP 3 -- =$= convert (map toUpper) -- =$= writeString -- return () -- -- readFileP :: FilePath -> Pipe () String IO () -- readFileP fp = bracket (openFile fp ReadMode) hClose hRead -- -- hRead :: Handle -> Pipe () String IO () -- hRead h = do -- eof <- lift $ hIsEOF h -- if eof then return () else do -- l <- lift $ hGetLine h -- yield l -- hRead h -- -- writeString :: Pipe String () IO () -- writeString = do -- ms <- await -- case ms of -- Just s -> lift (putStrLn s) >> writeString -- _ -> return () -- -- convert :: Monad m => (a -> b) -> Pipe a b m () -- convert f = do -- mx <- await -- case mx of -- Just x -> yield (f x) >> convert f -- _ -> return () -- -- takeP :: Monad m => Int -> Pipe a a m () -- takeP 0 = return () -- takeP n = do -- mx <- await -- case mx of -- Just x -> yield x >> takeP (n - 1) -- _ -> return () --@package simple-pipe @version 0.0.0.0 module Data.Pipe class PipeClass p (=$=) :: (PipeClass p, Monad m) => p a b m x -> p b c m y -> p a c m y yield :: (PipeClass p, Monad m) => o -> p i o m () await :: (PipeClass p, Monad m) => p i o m (Maybe i) data Pipe i o m r runPipe :: Monad m => Pipe i o m r -> m (Maybe r) finalize :: Monad m => Pipe i o m r -> m b -> Pipe i o m r finally :: MonadBaseControl IO m => Pipe i o m r -> m b -> Pipe i o m r bracket :: MonadBaseControl IO m => m a -> (a -> m b) -> (a -> Pipe i o m r) -> Pipe i o m r instance MonadTrans (Pipe i o) instance Monad m => Applicative (Pipe i o m) instance Monad m => Functor (Pipe i o m) instance Monad m => Monad (Pipe i o m) instance PipeClass Pipe