Monadic and General Iteratees: incremental input parsers, processors and transformers
- throwErr :: Monad m => SomeException -> Iteratee s m a
- throwRecoverableErr :: Monad m => SomeException -> (Stream s -> Iteratee s m a) -> Iteratee s m a
- checkErr :: (Monad m, NullPoint s) => Iteratee s m a -> Iteratee s m (Either SomeException a)
- identity :: (Monad m, NullPoint s) => Iteratee s m ()
- skipToEof :: Monad m => Iteratee s m ()
- isStreamFinished :: (Monad m, Nullable s) => Iteratee s m (Maybe SomeException)
- mapChunksM_ :: (Monad m, Nullable s) => (s -> m b) -> Iteratee s m ()
- convStream :: (Monad m, Nullable s) => Iteratee s m s' -> Enumeratee s s' m a
- unfoldConvStream :: (Monad m, Nullable s) => (acc -> Iteratee s m (acc, s')) -> acc -> Enumeratee s s' m a
- joinI :: (Monad m, Nullable s) => Iteratee s m (Iteratee s' m a) -> Iteratee s m a
- joinIM :: Monad m => m (Iteratee s m a) -> Iteratee s m a
- type Enumerator s m a = Iteratee s m a -> m (Iteratee s m a)
- type Enumeratee sFrom sTo m a = Iteratee sTo m a -> Iteratee sFrom m (Iteratee sTo m a)
- enumChunk :: Monad m => Stream s -> Enumerator s m a
- enumEof :: Monad m => Enumerator s m a
- enumErr :: (Exception e, Monad m) => e -> Enumerator s m a
- enumPure1Chunk :: Monad m => s -> Enumerator s m a
- enumCheckIfDone :: Monad m => Iteratee s m a -> m (Bool, Iteratee s m a)
- enumFromCallback :: (Monad m, NullPoint s) => (st -> m (Either SomeException ((Bool, st), s))) -> st -> Enumerator s m a
- enumFromCallbackCatch :: (IException e, Monad m, NullPoint s) => (st -> m (Either SomeException ((Bool, st), s))) -> (e -> m (Maybe EnumException)) -> st -> Enumerator s m a
- (>>>) :: Monad m => Enumerator s m a -> Enumerator s m a -> Enumerator s m a
- eneeCheckIfDone :: (Monad m, NullPoint elo) => ((Stream eli -> Iteratee eli m a) -> Iteratee elo m (Iteratee eli m a)) -> Enumeratee elo eli m a
- (><>) :: (Nullable s1, Monad m) => (forall x. Enumeratee s1 s2 m x) -> Enumeratee s2 s3 m a -> Enumeratee s1 s3 m a
- (<><) :: (Nullable s1, Monad m) => Enumeratee s2 s3 m a -> (forall x. Enumeratee s1 s2 m x) -> Enumeratee s1 s3 m a
- seek :: (Monad m, NullPoint s) => FileOffset -> Iteratee s m ()
- type FileOffset = COff
- module Data.Iteratee.Base
Check if an iteratee produces an error.
Right a if it completes without errors, otherwise
checkErr is useful for iteratees that may not
terminate, such as
Data.Iteratee.head with an empty stream.
The identity iteratee. Doesn't do any processing of input.
Get the stream status of an iteratee.
Map a monadic function over the chunks of the stream and ignore the result. Useful for creating efficient monadic iteratee consumers, e.g.
logger = mapChunksM_ (liftIO . putStrLn)
these can be efficiently run in parallel with other iteratees via enumPair.
Nested iteratee combinators
Convert one stream into another, not necessarily in lockstep. The transformer mapStream maps one element of the outer stream to one element of the nested stream. The transformer below is more general: it may take several elements of the outer stream to produce one element of the inner stream, or the other way around. The transformation from one stream to the other is specified as Iteratee s m s'.
The most general stream converter. Given a function to produce iteratee transformers and an initial state, convert the stream using iteratees generated by the function while continually updating the internal state.
Each enumerator takes an iteratee and returns an iteratee an Enumerator is an iteratee transformer. The enumerator normally stops when the stream is terminated or when the iteratee moves to the done state, whichever comes first. When to stop is of course up to the enumerator...
The most primitive enumerator: applies the iteratee to the terminated stream. The result is the iteratee in the Done state. It is an error if the iteratee does not terminate on EOF.
Another primitive enumerator: tell the Iteratee the stream terminated with an error.
The pure 1-chunk enumerator 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
Checks if an iteratee has finished. This enumerator runs the iteratee, performing any monadic actions. If the result is True, the returned iteratee is done.
Create an enumerator from a callback function
Create an enumerator from a callback function with an exception handler. The exception handler is called if an iteratee reports an exception.
The composition of two enumerators: essentially the functional composition It is convenient to flip the order of the arguments of the composition though: in e1 >>> e2, e1 is executed first
Enumeratee composition Run the second enumeratee within the first. In this example, stream2list is run within the 'take 10', which is itself run within 'take 15', resulting in 15 elements being consumed
run =<< enumPure1Chunk [1..1000 :: Int] (joinI $ (I.take 15 ><> I.take 10) I.stream2list) [1,2,3,4,5,6,7,8,9,10]
enumeratee composition with the arguments flipped, see
Seek to a position in the stream