iteratee 0.8.4.5 → 0.8.4.6
raw patch · 5 files changed
+58/−32 lines, 5 filesdep ~exceptionsdep ~transformersPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: exceptions, transformers
API changes (from Hackage documentation)
+ Data.Iteratee.Base: instance (MonadMask m, Nullable s, NullPoint s) => MonadMask (Iteratee s m)
- Data.Iteratee: fileDriver :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a
+ Data.Iteratee: fileDriver :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a
- Data.Iteratee: fileDriverRandom :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a
+ Data.Iteratee: fileDriverRandom :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a
- Data.Iteratee: fileDriverRandomVBuf :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
+ Data.Iteratee: fileDriverRandomVBuf :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
- Data.Iteratee: fileDriverVBuf :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
+ Data.Iteratee: fileDriverVBuf :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
- Data.Iteratee.IO: enumFd :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) => Int -> Fd -> Enumerator s m a
+ Data.Iteratee.IO: enumFd :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -> Fd -> Enumerator s m a
- Data.Iteratee.IO: enumFdRandom :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) => Int -> Fd -> Enumerator s m a
+ Data.Iteratee.IO: enumFdRandom :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -> Fd -> Enumerator s m a
- Data.Iteratee.IO: enumFile :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a
+ Data.Iteratee.IO: enumFile :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a
- Data.Iteratee.IO: enumFileRandom :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a
+ Data.Iteratee.IO: enumFileRandom :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a
- Data.Iteratee.IO: enumHandle :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) => Int -> Handle -> Enumerator s m a
+ Data.Iteratee.IO: enumHandle :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -> Handle -> Enumerator s m a
- Data.Iteratee.IO: enumHandleRandom :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) => Int -> Handle -> Enumerator s m a
+ Data.Iteratee.IO: enumHandleRandom :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -> Handle -> Enumerator s m a
- Data.Iteratee.IO: fileDriver :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a
+ Data.Iteratee.IO: fileDriver :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a
- Data.Iteratee.IO: fileDriverRandom :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a
+ Data.Iteratee.IO: fileDriverRandom :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a
- Data.Iteratee.IO: fileDriverRandomVBuf :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
+ Data.Iteratee.IO: fileDriverRandomVBuf :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
- Data.Iteratee.IO: fileDriverVBuf :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
+ Data.Iteratee.IO: fileDriverVBuf :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
- Data.Iteratee.IO.Fd: enumFd :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) => Int -> Fd -> Enumerator s m a
+ Data.Iteratee.IO.Fd: enumFd :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -> Fd -> Enumerator s m a
- Data.Iteratee.IO.Fd: enumFdCatch :: (IException e, NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) => Int -> Fd -> (e -> m (Maybe EnumException)) -> Enumerator s m a
+ Data.Iteratee.IO.Fd: enumFdCatch :: (IException e, NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -> Fd -> (e -> m (Maybe EnumException)) -> Enumerator s m a
- Data.Iteratee.IO.Fd: enumFdRandom :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) => Int -> Fd -> Enumerator s m a
+ Data.Iteratee.IO.Fd: enumFdRandom :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -> Fd -> Enumerator s m a
- Data.Iteratee.IO.Fd: enumFile :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a
+ Data.Iteratee.IO.Fd: enumFile :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a
- Data.Iteratee.IO.Fd: enumFileRandom :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a
+ Data.Iteratee.IO.Fd: enumFileRandom :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a
- Data.Iteratee.IO.Fd: fileDriverFd :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
+ Data.Iteratee.IO.Fd: fileDriverFd :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
- Data.Iteratee.IO.Fd: fileDriverRandomFd :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
+ Data.Iteratee.IO.Fd: fileDriverRandomFd :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
- Data.Iteratee.IO.Handle: enumFile :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a
+ Data.Iteratee.IO.Handle: enumFile :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a
- Data.Iteratee.IO.Handle: enumFileRandom :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a
+ Data.Iteratee.IO.Handle: enumFileRandom :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a
- Data.Iteratee.IO.Handle: enumHandle :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) => Int -> Handle -> Enumerator s m a
+ Data.Iteratee.IO.Handle: enumHandle :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -> Handle -> Enumerator s m a
- Data.Iteratee.IO.Handle: enumHandleCatch :: (IException e, NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) => Int -> Handle -> (e -> m (Maybe EnumException)) -> Enumerator s m a
+ Data.Iteratee.IO.Handle: enumHandleCatch :: (IException e, NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -> Handle -> (e -> m (Maybe EnumException)) -> Enumerator s m a
- Data.Iteratee.IO.Handle: enumHandleRandom :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) => Int -> Handle -> Enumerator s m a
+ Data.Iteratee.IO.Handle: enumHandleRandom :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -> Handle -> Enumerator s m a
- Data.Iteratee.IO.Handle: fileDriverHandle :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
+ Data.Iteratee.IO.Handle: fileDriverHandle :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
- Data.Iteratee.IO.Handle: fileDriverRandomHandle :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
+ Data.Iteratee.IO.Handle: fileDriverRandomHandle :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
Files
- iteratee.cabal +3/−3
- src/Data/Iteratee/Base.hs +7/−0
- src/Data/Iteratee/IO.hs +18/−12
- src/Data/Iteratee/IO/Fd.hs +16/−9
- src/Data/Iteratee/IO/Handle.hs +14/−8
iteratee.cabal view
@@ -1,5 +1,5 @@ name: iteratee-version: 0.8.4.5+version: 0.8.4.6 synopsis: Iteratee-based I/O description: The Iteratee monad provides strict, safe, and functional I/O. In addition@@ -50,9 +50,9 @@ ListLike >= 1.0 && < 5, bytestring >= 0.9 && < 0.11, containers >= 0.2 && < 0.6,- exceptions >= 0.5 && < 0.6,+ exceptions >= 0.5 && < 0.7, parallel >= 2 && < 4,- transformers >= 0.2 && < 0.4+ transformers >= 0.2 && < 0.5 exposed-modules: Data.Nullable
src/Data/Iteratee/Base.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE TypeFamilies, FlexibleContexts, FlexibleInstances, Rank2Types, DeriveDataTypeable, ExistentialQuantification #-} @@ -168,6 +169,12 @@ instance (MonadCatch m, Nullable s, NullPoint s) => MonadCatch (Iteratee s m) where m `catch` f = Iteratee $ \od oc -> runIter m od oc `CIO.catch` (\e -> runIter (f e) od oc)++-- prior to exceptions-0.6, these were part of MonadCatch+#if MIN_VERSION_exceptions(0,6,0)+instance (MonadMask m, Nullable s, NullPoint s) =>+ MonadMask (Iteratee s m) where+#endif mask q = Iteratee $ \od oc -> CIO.mask $ \u -> runIter (q $ ilift u) od oc uninterruptibleMask q = Iteratee $ \od oc -> CIO.uninterruptibleMask $ \u -> runIter (q $ ilift u) od oc
src/Data/Iteratee/IO.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP #-}+{-# LANGUAGE ConstraintKinds #-} -- |Random and Binary IO with generic Iteratees. @@ -40,6 +41,11 @@ import Control.Monad.Catch import Control.Monad.IO.Class +#if MIN_VERSION_exceptions(0,6,0)+#else+type MonadMask = MonadCatch+#endif+ -- | The default buffer size. defaultBufSize :: Int defaultBufSize = 1024@@ -48,14 +54,14 @@ #if defined(USE_POSIX) enumFile- :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a enumFile = FD.enumFile enumFileRandom- :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a@@ -64,7 +70,7 @@ -- |Process a file using the given Iteratee. This function wraps -- enumFd as a convenience. fileDriver- :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a@@ -72,7 +78,7 @@ -- |A version of fileDriver with a user-specified buffer size (in elements). fileDriverVBuf- :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath@@ -82,14 +88,14 @@ -- |Process a file using the given Iteratee. This function wraps -- enumFdRandom as a convenience. fileDriverRandom- :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a fileDriverRandom = FD.fileDriverRandomFd defaultBufSize fileDriverRandomVBuf- :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath@@ -104,7 +110,7 @@ -- |Process a file using the given Iteratee. This function wraps -- @enumHandle@ as a convenience. fileDriver ::- (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) =>+ (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a@@ -112,7 +118,7 @@ -- |A version of fileDriver with a user-specified buffer size (in elements). fileDriverVBuf ::- (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) =>+ (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath@@ -122,14 +128,14 @@ -- |Process a file using the given Iteratee. This function wraps -- @enumRandomHandle@ as a convenience. fileDriverRandom- :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a fileDriverRandom = H.fileDriverRandomHandle defaultBufSize fileDriverRandomVBuf- :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath@@ -137,14 +143,14 @@ fileDriverRandomVBuf = H.fileDriverRandomHandle enumFile- :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a enumFile = H.enumFile enumFileRandom- :: (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) =>+ :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Int -> FilePath -> Enumerator s m a
src/Data/Iteratee/IO/Fd.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP, ScopedTypeVariables #-}+{-# LANGUAGE ConstraintKinds #-} -- |Random and Binary IO with generic Iteratees, using File Descriptors for IO. -- when available, these are the preferred functions for performing IO as they@@ -41,6 +42,12 @@ import System.Posix hiding (FileOffset) +#if MIN_VERSION_exceptions(0,6,0)+#else+type MonadMask = MonadCatch+#endif++ -- ------------------------------------------------------------------------ -- Binary Random IO enumerators @@ -63,7 +70,7 @@ -- over the entire contents of a file, in order, unless stopped by -- the iteratee. In particular, seeking is not supported. enumFd- :: forall s el m a.(NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) =>+ :: forall s el m a.(NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -> Fd -> Enumerator s m a@@ -75,7 +82,7 @@ -- |A variant of enumFd that catches exceptions raised by the @Iteratee@. enumFdCatch- :: forall e s el m a.(IException e, NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m)+ :: forall e s el m a.(IException e, NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -> Fd -> (e -> m (Maybe EnumException))@@ -90,7 +97,7 @@ -- |The enumerator of a POSIX File Descriptor: a variation of @enumFd@ that -- supports RandomIO (seek requests). enumFdRandom- :: forall s el m a.(NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) =>+ :: forall s el m a.(NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -> Fd -> Enumerator s m a@@ -103,7 +110,7 @@ . liftIO . myfdSeek fd AbsoluteSeek $ fromIntegral off fileDriver- :: (MonadIO m, MonadCatch m, ReadableChunk s el) =>+ :: (MonadIO m, MonadMask m, ReadableChunk s el) => (Int -> Fd -> Enumerator s m a) -> Int -> Iteratee s m a@@ -116,7 +123,7 @@ -- |Process a file using the given @Iteratee@. fileDriverFd- :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) =>+ :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -- ^Buffer size (number of elements) -> Iteratee s m a -> FilePath@@ -125,14 +132,14 @@ -- |A version of fileDriverFd that supports seeking. fileDriverRandomFd- :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) =>+ :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a fileDriverRandomFd = fileDriver enumFdRandom -enumFile' :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) =>+enumFile' :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => (Int -> Fd -> Enumerator s m a) -> Int -- ^Buffer size -> FilePath@@ -143,14 +150,14 @@ (flip (enumf bufsize) iter) enumFile ::- (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el)+ (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -- ^Buffer size -> FilePath -> Enumerator s m a enumFile = enumFile' enumFd enumFileRandom ::- (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el)+ (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -- ^Buffer size -> FilePath -> Enumerator s m a
src/Data/Iteratee/IO/Handle.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE ScopedTypeVariables #-} -- |Random and Binary IO with generic Iteratees. These functions use Handles@@ -34,6 +36,10 @@ import System.IO +#if MIN_VERSION_exceptions(0,6,0)+#else+type MonadMask = MonadCatch+#endif -- ------------------------------------------------------------------------ -- Binary Random IO enumerators@@ -59,7 +65,7 @@ -- the iteratee. In particular, seeking is not supported. -- Data is read into a buffer of the specified size. enumHandle ::- forall s el m a.(NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) =>+ forall s el m a.(NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -- ^Buffer size (number of elements per read) -> Handle -> Enumerator s m a@@ -76,7 +82,7 @@ forall e s el m a.(IException e, NullPoint s, ReadableChunk s el,- MonadIO m, MonadCatch m) =>+ MonadIO m, MonadMask m) => Int -- ^Buffer size (number of elements per read) -> Handle -> (e -> m (Maybe EnumException))@@ -92,7 +98,7 @@ -- supports RandomIO (seek requests). -- Data is read into a buffer of the specified size. enumHandleRandom ::- forall s el m a.(NullPoint s, ReadableChunk s el, MonadIO m, MonadCatch m) =>+ forall s el m a.(NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -- ^ Buffer size (number of elements per read) -> Handle -> Enumerator s m a@@ -107,7 +113,7 @@ -- ---------------------------------------------- -- File Driver wrapper functions. -enumFile' :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) =>+enumFile' :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => (Int -> Handle -> Enumerator s m a) -> Int -- ^Buffer size -> FilePath@@ -118,14 +124,14 @@ (flip (enumf bufsize) iter) enumFile ::- (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el)+ (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -- ^Buffer size -> FilePath -> Enumerator s m a enumFile = enumFile' enumHandle enumFileRandom ::- (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el)+ (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -- ^Buffer size -> FilePath -> Enumerator s m a@@ -134,7 +140,7 @@ -- |Process a file using the given @Iteratee@. This function wraps -- @enumHandle@ as a convenience. fileDriverHandle- :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) =>+ :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -- ^Buffer size (number of elements) -> Iteratee s m a -> FilePath@@ -144,7 +150,7 @@ -- |A version of @fileDriverHandle@ that supports seeking. fileDriverRandomHandle- :: (NullPoint s, MonadIO m, MonadCatch m, ReadableChunk s el) =>+ :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) => Int -- ^ Buffer size (number of elements) -> Iteratee s m a -> FilePath