packages feed

iteratee 0.8.4.6 → 0.8.5.0

raw patch · 8 files changed

+93/−107 lines, 8 filesdep +MonadCatchIO-transformersdep −exceptionsdep −iterateedep ~ListLikedep ~basedep ~bytestringnew-component:exe:testIterateePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: MonadCatchIO-transformers

Dependencies removed: exceptions, iteratee

Dependency ranges changed: ListLike, base, bytestring, containers, mtl, parallel, test-framework, test-framework-quickcheck2, transformers

API changes (from Hackage documentation)

- Data.Iteratee.Base: instance (MonadCatch m, Nullable s, NullPoint s) => MonadCatch (Iteratee s m)
- Data.Iteratee.Base: instance (MonadMask m, Nullable s, NullPoint s) => MonadMask (Iteratee s m)
- Data.Iteratee.Base: instance (MonadThrow m, Nullable s, NullPoint s) => MonadThrow (Iteratee s m)
+ Data.Iteratee.Base: instance (MonadCatchIO m, Nullable s, NullPoint s) => MonadCatchIO (Iteratee s m)
- Data.Iteratee: fileDriver :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) => Iteratee s m a -> FilePath -> m a
+ Data.Iteratee: fileDriver :: (MonadCatchIO 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: fileDriverRandom :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) => 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: fileDriverRandomVBuf :: (MonadCatchIO 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: fileDriverVBuf :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
- Data.Iteratee.Exception: class Exception e => IException e where toIterException = IterException fromIterException = fromException . toException
+ Data.Iteratee.Exception: class Exception e => IException e
- Data.Iteratee.IO: enumFd :: (NullPoint s, ReadableChunk s el, MonadIO m, MonadMask m) => Int -> Fd -> Enumerator s m a
+ Data.Iteratee.IO: enumFd :: (NullPoint s, ReadableChunk s el, MonadCatchIO 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: enumFdRandom :: (NullPoint s, ReadableChunk s el, MonadCatchIO m) => Int -> Fd -> 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: enumFile :: (MonadCatchIO 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: enumFileRandom :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) => Int -> FilePath -> 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: enumHandle :: (NullPoint s, ReadableChunk s el, MonadCatchIO 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: enumHandleRandom :: (NullPoint s, ReadableChunk s el, MonadCatchIO m) => Int -> Handle -> Enumerator s 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: fileDriver :: (MonadCatchIO 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: fileDriverRandom :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) => 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: fileDriverRandomVBuf :: (MonadCatchIO 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: fileDriverVBuf :: (MonadCatchIO 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, MonadMask m) => Int -> Fd -> Enumerator s m a
+ Data.Iteratee.IO.Fd: enumFd :: (NullPoint s, ReadableChunk s el, MonadCatchIO m) => Int -> Fd -> 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: enumFdCatch :: (IException e, NullPoint s, ReadableChunk s el, MonadCatchIO m) => Int -> Fd -> (e -> m (Maybe EnumException)) -> 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: enumFdRandom :: (NullPoint s, ReadableChunk s el, MonadCatchIO m) => Int -> Fd -> 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: enumFile :: (NullPoint s, MonadCatchIO 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: enumFileRandom :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) => Int -> FilePath -> Enumerator s 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: fileDriverFd :: (NullPoint s, MonadCatchIO 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.Fd: fileDriverRandomFd :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> 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: enumFile :: (NullPoint s, MonadCatchIO 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: enumFileRandom :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) => Int -> FilePath -> 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: enumHandle :: (NullPoint s, ReadableChunk s el, MonadCatchIO m) => Int -> Handle -> 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: enumHandleCatch :: (IException e, NullPoint s, ReadableChunk s el, MonadCatchIO m) => Int -> Handle -> (e -> m (Maybe EnumException)) -> 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: enumHandleRandom :: (NullPoint s, ReadableChunk s el, MonadCatchIO m) => Int -> Handle -> Enumerator s 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: fileDriverHandle :: (NullPoint s, MonadCatchIO 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
+ Data.Iteratee.IO.Handle: fileDriverRandomHandle :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) => Int -> Iteratee s m a -> FilePath -> m a
- Data.Iteratee.Iteratee: enumChunk :: Monad m => Stream s -> Enumerator s m a
+ Data.Iteratee.Iteratee: enumChunk :: (Monad m, Monoid s) => Stream s -> Enumerator s m a
- Data.Iteratee.Iteratee: enumPure1Chunk :: Monad m => s -> Enumerator s m a
+ Data.Iteratee.Iteratee: enumPure1Chunk :: (Monad m, Monoid s) => s -> Enumerator s m a
- Data.Iteratee.Iteratee: type Enumeratee sFrom sTo (m :: * -> *) a = Iteratee sTo m a -> Iteratee sFrom m (Iteratee sTo m a)
+ Data.Iteratee.Iteratee: type Enumeratee sFrom sTo m :: (* -> *) a = Iteratee sTo m a -> Iteratee sFrom m (Iteratee sTo m a)

Files

iteratee.cabal view
@@ -1,5 +1,5 @@ name:          iteratee-version:       0.8.4.6+version:       0.8.5.0 synopsis:      Iteratee-based I/O description:   The Iteratee monad provides strict, safe, and functional I/O. In addition@@ -12,10 +12,10 @@ license:       BSD3 license-file:  LICENSE homepage:      http://www.tiresiaspress.us/haskell/iteratee-tested-with:   GHC == 7.4.2, GHC == 7.6.0+tested-with:   GHC == 7.0.3, GHC == 6.12.3 stability:     experimental -cabal-version: >= 1.16+cabal-version: >= 1.6 build-type:    Simple  extra-source-files:@@ -26,13 +26,23 @@   Examples/*.txt   tests/*.hs +flag splitBase+  description: Use the split-up base package.++flag buildTests+  description: Build test executables.+  default:     False+ library-  default-language: Haskell2010   hs-source-dirs:     src -  build-depends:+  if flag(splitBase)+    build-depends:       base >= 3 && < 6+  else+    build-depends:+      base < 3    if os(windows)     cpp-options: -DUSE_WINDOWS@@ -47,12 +57,12 @@       unix >= 2 && < 3    build-depends:-    ListLike                  >= 1.0     && < 5,-    bytestring                >= 0.9     && < 0.11,-    containers                >= 0.2     && < 0.6,-    exceptions                >= 0.5     && < 0.7,+    ListLike                  >= 1.0     && < 4,+    MonadCatchIO-transformers >  0.2     && < 0.3,+    bytestring                >= 0.9     && < 0.10,+    containers                >= 0.2     && < 0.5,     parallel                  >= 2       && < 4,-    transformers              >= 0.2     && < 0.5+    transformers              >= 0.2     && < 0.3    exposed-modules:     Data.Nullable@@ -77,36 +87,31 @@   if impl(ghc >= 6.8)     ghc-options: -fwarn-tabs -Test-Suite testIteratee-  default-language: Haskell2010-  type: exitcode-stdio-1.0-  main-is: testIteratee.hs+executable testIteratee   hs-source-dirs:     src     tests +  main-is: testIteratee.hs+   other-modules:     QCUtils -  if os(windows)-    cpp-options: -DUSE_WINDOWS-  else-    cpp-options: -DUSE_POSIX+  if flag(buildTests)     build-depends:-      unix                    >= 2 && < 3--  build-depends:-      base,-      bytestring,-      exceptions,-      iteratee,-      ListLike,-      parallel,-      transformers,-      mtl                        >= 2   && < 4,+      mtl                        >= 2   && < 3,       QuickCheck                 >= 2   && < 3,-      test-framework             >= 0.3 && < 0.9,-      test-framework-quickcheck2 >= 0.2 && < 0.5+      test-framework             >= 0.3 && < 0.4,+      test-framework-quickcheck2 >= 0.2 && < 0.3+  else+    buildable:  False++  if flag(splitBase)+    build-depends:+      base >= 3 && < 5+  else+    build-depends:+      base < 3  source-repository head   type:     darcs
src/Data/Iteratee/Base.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE CPP #-} {-# LANGUAGE TypeFamilies, FlexibleContexts, FlexibleInstances, Rank2Types,     DeriveDataTypeable, ExistentialQuantification #-} @@ -34,17 +33,19 @@ ) where -import Prelude hiding (null)+import Prelude hiding (null, catch) import Data.Iteratee.Base.LooseMap import Data.Iteratee.Exception import Data.Nullable import Data.NullPoint import Data.Monoid -import Control.Monad.Catch as CIO import Control.Monad.IO.Class import Control.Monad.Trans.Class+import Control.Monad.CatchIO (MonadCatchIO (..), Exception (..),+  catch, block, toException, fromException) import Control.Applicative hiding (empty)+import Control.Exception (SomeException) import qualified Control.Exception as E import Data.Data @@ -162,21 +163,11 @@ instance (MonadIO m, Nullable s, NullPoint s) => MonadIO (Iteratee s m) where   liftIO = lift . liftIO -instance (MonadThrow m, Nullable s, NullPoint s) =>-  MonadThrow (Iteratee s m) where-    throwM e    = lift $ CIO.throwM e--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+instance (MonadCatchIO m, Nullable s, NullPoint s) =>+  MonadCatchIO (Iteratee s m) where+    m `catch` f = Iteratee $ \od oc -> runIter m od oc `catch` (\e -> runIter (f e) od oc)+    block       = ilift block+    unblock     = ilift unblock  -- |Send 'EOF' to the @Iteratee@ and disregard the unconsumed part of the -- stream.  If the iteratee is in an exception state, that exception is
src/Data/Iteratee/IO.hs view
@@ -1,5 +1,4 @@ {-# LANGUAGE CPP #-}-{-# LANGUAGE ConstraintKinds #-}  -- |Random and Binary IO with generic Iteratees. @@ -38,13 +37,7 @@ import qualified Data.Iteratee.IO.Fd as FD #endif -import Control.Monad.Catch-import Control.Monad.IO.Class--#if MIN_VERSION_exceptions(0,6,0)-#else-type MonadMask = MonadCatch-#endif+import Control.Monad.CatchIO  -- | The default buffer size. defaultBufSize :: Int@@ -54,14 +47,14 @@ #if defined(USE_POSIX)  enumFile-  :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) =>+  :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>      Int      -> FilePath      -> Enumerator s m a enumFile = FD.enumFile  enumFileRandom-  :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) =>+  :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>      Int      -> FilePath      -> Enumerator s m a@@ -70,7 +63,7 @@ -- |Process a file using the given Iteratee.  This function wraps -- enumFd as a convenience. fileDriver-  :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) =>+  :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>      Iteratee s m a      -> FilePath      -> m a@@ -78,7 +71,7 @@  -- |A version of fileDriver with a user-specified buffer size (in elements). fileDriverVBuf-  :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) =>+  :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>      Int      -> Iteratee s m a      -> FilePath@@ -88,14 +81,14 @@ -- |Process a file using the given Iteratee.  This function wraps -- enumFdRandom as a convenience. fileDriverRandom-  :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) =>+  :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>      Iteratee s m a      -> FilePath      -> m a fileDriverRandom = FD.fileDriverRandomFd defaultBufSize  fileDriverRandomVBuf-  :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) =>+  :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>      Int      -> Iteratee s m a      -> FilePath@@ -110,7 +103,7 @@ -- |Process a file using the given Iteratee.  This function wraps -- @enumHandle@ as a convenience. fileDriver ::- (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) =>+ (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>   Iteratee s m a   -> FilePath   -> m a@@ -118,7 +111,7 @@  -- |A version of fileDriver with a user-specified buffer size (in elements). fileDriverVBuf ::- (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) =>+ (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>   Int   -> Iteratee s m a   -> FilePath@@ -128,14 +121,14 @@ -- |Process a file using the given Iteratee.  This function wraps -- @enumRandomHandle@ as a convenience. fileDriverRandom-  :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) =>+  :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>      Iteratee s m a      -> FilePath      -> m a fileDriverRandom = H.fileDriverRandomHandle defaultBufSize  fileDriverRandomVBuf-  :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) =>+  :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>      Int      -> Iteratee s m a      -> FilePath@@ -143,14 +136,14 @@ fileDriverRandomVBuf = H.fileDriverRandomHandle  enumFile-  :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) =>+  :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>      Int      -> FilePath      -> Enumerator s m a enumFile = H.enumFile  enumFileRandom-  :: (MonadIO m, MonadMask m, NullPoint s, ReadableChunk s el) =>+  :: (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>      Int      -> FilePath      -> Enumerator s m a
src/Data/Iteratee/IO/Fd.hs view
@@ -1,5 +1,4 @@ {-# 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@@ -31,7 +30,7 @@ import Control.Concurrent (yield) import Control.Exception import Control.Monad-import Control.Monad.Catch as CIO+import Control.Monad.CatchIO as CIO import Control.Monad.IO.Class  import Foreign.Ptr@@ -42,12 +41,6 @@  import System.Posix hiding (FileOffset) -#if MIN_VERSION_exceptions(0,6,0)-#else-type MonadMask = MonadCatch-#endif-- -- ------------------------------------------------------------------------ -- Binary Random IO enumerators @@ -70,7 +63,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, MonadMask m) =>+  :: forall s el m a.(NullPoint s, ReadableChunk s el, MonadCatchIO m) =>      Int      -> Fd      -> Enumerator s m a@@ -82,7 +75,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, MonadMask m)+ :: forall e s el m a.(IException e, NullPoint s, ReadableChunk s el, MonadCatchIO m)     => Int     -> Fd     -> (e -> m (Maybe EnumException))@@ -97,7 +90,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, MonadMask m) =>+ :: forall s el m a.(NullPoint s, ReadableChunk s el, MonadCatchIO m) =>     Int     -> Fd     -> Enumerator s m a@@ -110,7 +103,7 @@             . liftIO . myfdSeek fd AbsoluteSeek $ fromIntegral off  fileDriver-  :: (MonadIO m, MonadMask m, ReadableChunk s el) =>+  :: (MonadCatchIO m, ReadableChunk s el) =>      (Int -> Fd -> Enumerator s m a)      -> Int      -> Iteratee s m a@@ -123,7 +116,7 @@  -- |Process a file using the given @Iteratee@. fileDriverFd-  :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) =>+  :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) =>      Int -- ^Buffer size (number of elements)      -> Iteratee s m a      -> FilePath@@ -132,14 +125,14 @@  -- |A version of fileDriverFd that supports seeking. fileDriverRandomFd-  :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) =>+  :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) =>      Int      -> Iteratee s m a      -> FilePath      -> m a fileDriverRandomFd = fileDriver enumFdRandom -enumFile' :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) =>+enumFile' :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) =>   (Int -> Fd -> Enumerator s m a)   -> Int -- ^Buffer size   -> FilePath@@ -150,14 +143,14 @@   (flip (enumf bufsize) iter)  enumFile ::-  (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el)+  (NullPoint s, MonadCatchIO m, ReadableChunk s el)   => Int                 -- ^Buffer size   -> FilePath   -> Enumerator s m a enumFile = enumFile' enumFd  enumFileRandom ::-  (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el)+  (NullPoint s, MonadCatchIO m, ReadableChunk s el)   => Int                 -- ^Buffer size   -> FilePath   -> Enumerator s m a
src/Data/Iteratee/IO/Handle.hs view
@@ -1,5 +1,3 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE ScopedTypeVariables #-}  -- |Random and Binary IO with generic Iteratees.  These functions use Handles@@ -27,7 +25,7 @@  import Control.Exception import Control.Monad-import Control.Monad.Catch as CIO+import Control.Monad.CatchIO as CIO import Control.Monad.IO.Class  import Foreign.Ptr@@ -36,16 +34,12 @@  import System.IO -#if MIN_VERSION_exceptions(0,6,0)-#else-type MonadMask = MonadCatch-#endif  -- ------------------------------------------------------------------------ -- Binary Random IO enumerators  makeHandleCallback ::-  (MonadIO m, MonadCatch m, NullPoint s, ReadableChunk s el) =>+  (MonadCatchIO m, NullPoint s, ReadableChunk s el) =>   Ptr el   -> Int   -> Handle@@ -65,7 +59,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, MonadMask m) =>+ forall s el m a.(NullPoint s, ReadableChunk s el, MonadCatchIO m) =>   Int -- ^Buffer size (number of elements per read)   -> Handle   -> Enumerator s m a@@ -82,7 +76,7 @@  forall e s el m a.(IException e,                     NullPoint s,                     ReadableChunk s el,-                    MonadIO m, MonadMask m) =>+                    MonadCatchIO m) =>   Int -- ^Buffer size (number of elements per read)   -> Handle   -> (e -> m (Maybe EnumException))@@ -98,7 +92,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, MonadMask m) =>+ forall s el m a.(NullPoint s, ReadableChunk s el, MonadCatchIO m) =>   Int -- ^ Buffer size (number of elements per read)   -> Handle   -> Enumerator s m a@@ -113,7 +107,7 @@ -- ---------------------------------------------- -- File Driver wrapper functions. -enumFile' :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) =>+enumFile' :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) =>   (Int -> Handle -> Enumerator s m a)   -> Int -- ^Buffer size   -> FilePath@@ -124,14 +118,14 @@   (flip (enumf bufsize) iter)  enumFile ::-  (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el)+  (NullPoint s, MonadCatchIO m, ReadableChunk s el)   => Int                 -- ^Buffer size   -> FilePath   -> Enumerator s m a enumFile = enumFile' enumHandle  enumFileRandom ::-  (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el)+  (NullPoint s, MonadCatchIO m, ReadableChunk s el)   => Int                 -- ^Buffer size   -> FilePath   -> Enumerator s m a@@ -140,7 +134,7 @@ -- |Process a file using the given @Iteratee@.  This function wraps -- @enumHandle@ as a convenience. fileDriverHandle-  :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) =>+  :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) =>      Int                      -- ^Buffer size (number of elements)      -> Iteratee s m a      -> FilePath@@ -150,7 +144,7 @@  -- |A version of @fileDriverHandle@ that supports seeking. fileDriverRandomHandle-  :: (NullPoint s, MonadIO m, MonadMask m, ReadableChunk s el) =>+  :: (NullPoint s, MonadCatchIO m, ReadableChunk s el) =>      Int                      -- ^ Buffer size (number of elements)      -> Iteratee s m a      -> FilePath
src/Data/Iteratee/Iteratee.hs view
@@ -325,7 +325,7 @@ -- |Applies the iteratee to the given stream.  This wraps 'enumEof', -- 'enumErr', and 'enumPure1Chunk', calling the appropriate enumerator -- based upon 'Stream'.-enumChunk :: (Monad m) => Stream s -> Enumerator s m a+enumChunk :: (Monad m, Monoid s) => Stream s -> Enumerator s m a enumChunk (Chunk xs)     = enumPure1Chunk xs enumChunk (EOF Nothing)  = enumEof enumChunk (EOF (Just e)) = enumErr e@@ -402,9 +402,10 @@ --  -- It passes a given list of elements to the iteratee in one chunk -- This enumerator does no IO and is useful for testing of base parsing-enumPure1Chunk :: (Monad m) => s -> Enumerator s m a-enumPure1Chunk str iter = runIter iter idoneM onCont+enumPure1Chunk :: (Monad m, Monoid s) => s -> Enumerator s m a+enumPure1Chunk str iter = runIter iter onDone onCont   where+    onDone a str'    = idoneM a (Chunk str `mappend` str')     onCont k Nothing = return $ k $ Chunk str     onCont k e       = return $ icont k e 
src/Data/Iteratee/ListLike.hs view
@@ -221,8 +221,10 @@ roll t d | t > d  = liftI step   where     step (Chunk vec)-      | LL.length vec >= t =+      | LL.length vec >= d =           idone (LL.singleton $ LL.take t vec) (Chunk $ LL.drop d vec)+      | LL.length vec >= t =+          idone (LL.singleton $ LL.take t vec) mempty <* drop (d-LL.length vec)       | LL.null vec        = liftI step       | otherwise          = liftI (step' vec)     step stream            = idone LL.empty stream
tests/testIteratee.hs view
@@ -153,6 +153,12 @@  type I = Iteratee [Int] Identity [Int] +prop_enumNoStream xs =+  runIdentity (enumPure1Chunk xs (return 'a') >>= \i ->+    Iter.run (i >> stream2list))+  == xs+  where types = xs :: [Int]+ prop_enumChunks n xs i = n > 0  ==>   runner1 (enumPure1Chunk xs i) == runner1 (enumSpecial xs n i)   where types = (n :: Int, xs :: [Int], i :: I)@@ -376,7 +382,8 @@     ,testProperty "iteratee Monad Assc" prop_iterMonad3     ]   ,testGroup "Simple Enumerators/Combinators" [-    testProperty "enumPureNChunk" prop_enumChunks+    testProperty "enumPure1Chunk - final stream state" prop_enumNoStream+    ,testProperty "enumPureNChunk" prop_enumChunks     ,testProperty "enum append 1" prop_app1     ,testProperty "enum sequencing" prop_app2     ,testProperty "enum sequencing 2" prop_app3