*       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Noneportablejmillikin@gmail.comNoneHAn enumeratee acts as a stream adapter; place one between an enumerator K and an iteratee, and it changes the type or contents of the input stream. HMost users will want to combine enumerators, enumeratees, and iteratees  using the stream combinators joinI and joinE, or their operator aliases  (=$) and ($=);. These combinators are used to manage how left-over input = is passed between elements of the data processing pipeline. >Enumerators are sources of data, to be consumed by iteratees. E Enumerators typically read from an external source (parser, handle, B random generator, etc), then feed chunks into an tteratee until: $ The input source runs out of data. % The iteratee yields a result value. # The iteratee throws an exception. =The primary data type for this library; an iteratee consumes A chunks of input from a stream until it either yields a value or  encounters an error. Compatibility note: Iteratee will become abstract in enumerator_0.5. If > you depend on internal implementation details, please import  Data.Enumerator.Internal. The 8 encountered an error which prevents it from proceeding  further. The 4 cannot receive any more input, and has generated a K result. Included in this value is left-over input, which can be passed to  composed s. The : is capable of accepting more input. Note that more input " is not necessarily required; the  might be able to generate a " value immediately if it receives  . A  ) is a sequence of chunks generated by an . (  [])8 is used to indicate that a stream is still active, but H currently has no available data. Iteratees should ignore empty chunks.   step =  (return step)    x extra =   ( x extra)CWARNING: due to the current encoding of iteratees in this library,  careless use of the  ' primitive may violate the monad laws. A To prevent this, always make sure that an iteratee never yields ? extra data unless it has received at least one input element. >More strictly, iteratees may not yield data that they did not  receive as input. Don't use   to  inject  elements  into the stream.   k =   ( k)$The most primitive stream operator. iter >>== enum returns a new  iteratee which will read from enum before continuing.  ( ) = flip () () = ()HThis is somewhat easier to read when constructing an iteratee from many * processing stages. You can treat it like (), and read the data flow  from left to right.  Since: 0.1.1  ( ) enum1 enum2 step = enum1 step  enum2The moral equivalent of () for iteratees.  Since: 0.1.1  ( ) = flip () Since: 0.1.1 Sends  * to its iteratee. Most clients should use run or run_  instead. A common pattern in % implementations is to check whether  the inner 0 has finished, and if so, to return its output.  , passes its parameter a continuation if the  / can still consume input, or yields otherwise.  Since: 0.4.3   =  (  [])<Use this for enumeratees which do not have an input buffer. A common pattern in % implementations is to check whether  the inner 0 has finished, and if so, to return its output.  , passes its parameter a continuation if the  9 can still consume input; if not, it returns the iteratee's step. .The type signature here is a bit crazy, but it's actually very easy to  use. Take this code:  , repeat :: Monad m => a -> Enumerator a m b  repeat x = loop where / loop (Continue k) = k (Chunks [x]) >>== loop  loop step = returnI step (And rewrite it without the boilerplate:  , repeat :: Monad m => a -> Enumerator a m b @ repeat x = checkContinue0 $ \loop k -> k (Chunks [x] >>== loop  Since: 0.4.9 Like 2, but allows each loop step to use a state value:  9 iterate :: Monad m => (a -> a) -> a -> Enumerator a m b J iterate f = checkContinue1 $ \loop a k -> k (Chunks [a]) >>== loop (f a)  Since: 0.4.9  Since: 0.4.5  Since: 0.4.8  Since: 0.4.6  Since: 0.4.8 %         portablejmillikin@gmail.comNone-Deprecated in 0.4.5: use   instead .Deprecated in 0.4.5: use   instead /Deprecated in 0.4.5: use   instead 0Deprecated in 0.4.5: use   instead 1Deprecated in 0.4.5: use   instead 2Deprecated in 0.4.5: use   instead 3Deprecated in 0.4.5: use  instead 4Deprecated in 0.4.8: use  instead  Since: 0.4.5 5Deprecated in 0.4.8: use  instead  Since: 0.4.5 6Deprecated in 0.4.8: use  instead  Since: 0.4.5 7Deprecated in 0.4.8: use  instead  Since: 0.4.5 8Deprecated in 0.4.8: use  instead  Since: 0.4.5 9Deprecated in 0.4.8: use  instead  Since: 0.4.5 :Deprecated in 0.4.8: use  instead  Since: 0.4.5 ;Deprecated in 0.4.8: use  instead  Since: 0.4.5 <Deprecated in 0.4.8: use  instead  Since: 0.4.5 =Deprecated in 0.4.8: use  instead  Since: 0.4.5 >Deprecated in 0.4.8: use  instead ?Deprecated in 0.4.8: use  instead  Since: 0.4.3 @Deprecated in 0.4.8: use  instead  Since: 0.4.3 ADeprecated in 0.4.8: use  instead  Since: 0.4.5 BDeprecated in 0.4.8: use  instead  Since: 0.4.5 CDeprecated in 0.4.8: use  instead  Since: 0.4.5 DDeprecated in 0.4.5: use  instead  Since: 0.1.1 EDeprecated in 0.4.5: use  instead  Since: 0.1.1 FDeprecated in 0.4.5: use  instead  Since: 0.1.1 -./0123456789:;<=>?@ABCDEF-./0123456789:;<=>?@ABCDEF-./0123456789:;<=>?@ABCDEFportablejmillikin@gmail.comNoneGERun an iteratee until it finishes, and return either the final value 0 (if it succeeded) or the error (if it failed).  import Data.Enumerator # import Data.Enumerator.List as EL   main = do 6 result <- run (EL.iterate succ 'A' $$ EL.take 5)  case result of A Left exc -> putStrLn ("Got an exception: " ++ show exc) D Right chars -> putStrLn ("Got characters: " ++ show chars) HLike G8, except errors are converted to exceptions and thrown. ; Primarily useful for small scripts or other simple cases.   import Data.Enumerator # import Data.Enumerator.List as EL   main = do 6 chars <- run_ (EL.iterate succ 'A' $$ EL.take 5) 1 putStrLn ("Got characters: " ++ show chars)  Since: 0.4.1 IThe moral equivalent of   for iteratees. J8Runs the iteratee, and calls an exception handler if an  is K returned. By handling errors within the enumerator library, and requiring ! all errors to be represented by  , libraries with - varying error types can be easily composed. IWARNING: Within the error handler, it is difficult or impossible to know G how much input the original iteratee has consumed. Users are strongly  advised to wrap all uses of  catchError with an appropriate isolation  enumeratee, such as Data.Enumerator.List.isolate or  Data.Enumerator.Binary.isolate', which will handle input framing even # in the face of unexpected errors.  Since: 0.1.1 KPrint chunks as they',re received from the enumerator, optionally  printing empty chunks. LL n xs enumerates xs as a stream, passing n inputs per B chunk. This is primarily useful for testing, debugging, and REPL  exploration. $Compatibility note: In version 0.5, L will be changed to the  type: 0 enumList :: Monad m => [a] -> Enumerator a m b MM xs enumerates xs& as a stream, where each element is a E separate chunk. This is primarily useful for testing and debugging. Since: 0.4.15 NHRun an iteratee with the given input, and return either the final value 0 (if it succeeded) or the error (if it failed). Since: 0.4.15 OLike N8, except errors are converted to exceptions and thrown. Since: 0.4.15 PCompose a list of s using (). Q Wraps  an iteratee inner in an enumeratee wrapper. % The resulting iteratee will consume wrapper s input type and  yield inner s output type. See the documentation for (R). #joinI (enum $$ iter) = enum =$ iterR Wraps  an iteratee inner in an enumeratee wrapper. % The resulting iteratee will consume wrapper s input type and  yield inner s output type. DNote: if the inner iteratee yields leftover input when it finishes,  that extra will be discarded. KAs an example, consider an iteratee that converts a stream of UTF8-encoded  bytes into a single Text:  6 consumeUTF8 :: Monad m => Iteratee ByteString m Text  It could be written with either Q or (=$):  # import Data.Enumerator.Text as ET  1 consumeUTF8 = joinI (decode utf8 $$ ET.consume) ) consumeUTF8 = decode utf8 =$ ET.consume  Since: 0.4.9 S Wraps  an enumerator inner in an enumeratee wrapper. ( The resulting enumerator will generate wrapper s output type. See the documentation for (T).  joinE enum enee = enum $= enee Since: 0.4.5 T Wraps  an enumerator inner in an enumeratee wrapper. ( The resulting enumerator will generate wrapper s output type. HAs an example, consider an enumerator that yields line character counts > for a text file (e.g. for source code readability checking):  3 enumFileCounts :: FilePath -> Enumerator Int IO b  It could be written with either S or ($=):   import Data.Text as T # import Data.Enumerator.List as EL # import Data.Enumerator.Text as ET  ? enumFileCounts path = joinE (enumFile path) (EL.map T.length) 8 enumFileCounts path = enumFile path $= EL.map T.length <Compatibility note: in version 0.4.15, the associativity of ($=) was  changed from infixr 0 to infixl 1.  Since: 0.4.9 UComposes two enumeratees. GNote that if the inner enumeratee yields left-over input, this will be  discarded. 0Example: converting bytes into lower-case text:   import Data.ByteString  import Data.Text ) import Data.Enumerator.List as EnumList  import Data.Enumerator.Text  = decodeAndLower :: Monad m => Enumeratee ByteString Text m b 7 decodeAndLower = decode utf8 =$= EnumList.map toLower Since: 0.4.17 VFFeeds outer input elements into the provided iteratee until it yields D an inner input, passes that to the inner iteratee, and then loops. WGCheck whether a stream has reached EOF. Note that if the stream is not  at EOF, isEOF0 may cause data to be read from the enumerator. XGTry to run an IO computation. If it throws an exception, the exception  is caught and passed to I.  Since: 0.4.9 YLift an + onto a monad transformer, re-wrapping its  inner monadic values.  Since: 0.1.1 Z+Peek at the next element in the stream, or   if the stream  has ended. ['Get the last element in the stream, or   if the stream  has ended. Consumes the entire stream. \.Get how many elements remained in the stream. Consumes the entire stream. GHIJKPrint empty chunks LMNOPQRSTUVWXYZ[\I -./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\:GHRTUIJPQSVWXYKLMNOZ[\-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\portablejmillikin@gmail.comNone.CApplies a monadic predicate to the stream. The inner iteratee only 3 receives elements for which the predicate returns True.  Since: 0.4.8 DApplies a predicate to the stream. The inner iteratee only receives % elements for which the predicate is True.  Since: 0.4.8  f applies f% to each input element and feeds the * resulting outputs to the inner iteratee.  Since: 0.4.8  f applies f to each input element 8 and feeds the resulting outputs to the inner iteratee.  Since: 0.4.8  f applies f to each input element and 4 feeds the resulting outputs to the inner iteratee.  Since: 0.4.8  f applies f to each input element and 4 feeds the resulting outputs to the inner iteratee.  Since: 0.4.8 Like "5, except the computation may terminate the stream by  returning  .  Since: 0.4.8   n x enumerates a stream containing  n copies of x.  Analogous to  .  Since: 0.4.8 !! n m_x enumerates a stream of n elements, with each  element computed by m_x.  Since: 0.4.8 "FEnumerates an infinite stream of element. Each element is computed by  the underlying monad.  Since: 0.4.8 #3Enumerates an infinite stream of a single element.  Analogous to .  Since: 0.4.8 $ Similar to %, except the iteration  function is monadic.  Since: 0.4.8 %% f x" enumerates an infinite stream of  repeated applications of f to x.  Analogous to .  Since: 0.4.8 &EConsume the entire input stream with a strict monadic left fold, one  element at a time.  Since: 0.4.8 'EConsume the entire input stream with a strict left fold, one element  at a time.  Since: 0.4.8 ( ( = ) (const True) Since: 0.4.5 )) p8 extracts input from the stream until the first element % which does not match the predicate.  Since: 0.4.5 ** p ignores input from the stream = until the first element which does not match the predicate.  Since: 0.4.5 ++ n ignores n! input elements from the stream.  Since: 0.4.5 ,)Get the next element from the stream, or   if the stream has  ended.  Since: 0.4.5 ]EEnumerates a stream of elements by repeatedly applying a function to  some state.  Similar to %.  Since: 0.4.8 ^HEnumerates a stream of elements by repeatedly applying a computation to  some state.  Similar to $.  Since: 0.4.8 __ f applies f to each input element, and  discards the results. Since: 0.4.11 ` Similar to , but with a stateful step  function. Since: 0.4.11 a Similar to %, but with a stateful step function. Since: 0.4.11 b Similar to %, but with a stateful step function.  Since: 0.4.9 c Similar to %, but with a stateful step function.  Since: 0.4.9 dd n extracts the next n elements from the  stream, as a list.  Since: 0.4.5 eHPass input from a stream through two iteratees at once. Excess input is 4 yielded if it was not consumed by either iteratee.  Analogous to . Since: 0.4.14 fJPass input from a stream through three iteratees at once. Excess input is 1 yielded if it was not consumed by any iteratee.  Analogous to  . Since: 0.4.14 gIPass input from a stream through four iteratees at once. Excess input is 1 yielded if it was not consumed by any iteratee.  Analogous to !. Since: 0.4.14 hIPass input from a stream through five iteratees at once. Excess input is 1 yielded if it was not consumed by any iteratee.  Analogous to ". Since: 0.4.14 iHPass input from a stream through six iteratees at once. Excess input is 1 yielded if it was not consumed by any iteratee.  Analogous to #. Since: 0.4.14 jJPass input from a stream through seven iteratees at once. Excess input is 1 yielded if it was not consumed by any iteratee.  Analogous to $. Since: 0.4.14 kHPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to %. Since: 0.4.14 lHPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to &. Since: 0.4.14 mHPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to '. Since: 0.4.14 nHPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to (. Since: 0.4.14 oHPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to ). Since: 0.4.14 pHPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to *. Since: 0.4.14 qFGet the next element from the stream, or raise an error if the stream  has ended. Since: 0.4.14 rr n buffers input until at least n elements are available, or + throws an error if the stream ends early.  Since: 0.4.5 ss n reads at most n+ elements from the stream, and passes them J to its iteratee. If the iteratee finishes early, elements continue to be & consumed from the outer stream until n have been consumed.  Since: 0.4.5 tt p& reads elements from the stream until p is false, and G passes them to its iteratee. If the iteratee finishes early, elements 5 continue to be consumed from the outer stream until p is false. Since: 0.4.16 u0Split on elements satisfying a given predicate.  Since: 0.4.8 vCRemove duplicate elements from a stream, passing through the first  instance of each value.  Similar to nub', but more efficient because it uses a   internally. Since: 0.4.11 . !"#$%&'()*+,]^_`abcdefghijklmnopqrstuv. !"#$%&'()*+,]^_`abcdefghijklmnopqrstuv.'&_bc`a%$#" !]^+*v,qd)(efghijklmnoprstu. !"#$%&'()*+,]^_`abcdefghijklmnopqrstuvportablejmillikin@gmail.comNone2wBConsume the entire input stream with a strict left fold, one byte  at a time.  Since: 0.4.8 xEConsume the entire input stream with a strict monadic left fold, one  byte at a time.  Since: 0.4.8 yBEnumerates a stream of bytes by repeatedly applying a function to  some state.  Similar to .  Since: 0.4.8 zEEnumerates a stream of bytes by repeatedly applying a computation to  some state.  Similar to .  Since: 0.4.8 {{ f applies f to each input byte and 4 feeds the resulting outputs to the inner iteratee.  Since: 0.4.8 || f applies f to each input byte and 4 feeds the resulting outputs to the inner iteratee.  Since: 0.4.8 }} f applies f to each input byte, and  discards the results. Since: 0.4.11 ~~ f applies f to each input byte 8 and feeds the resulting outputs to the inner iteratee.  Since: 0.4.8  f applies f" to each input byte and feeds the * resulting outputs to the inner iteratee.  Since: 0.4.8  Similar to ~, but with a stateful step  function. Since: 0.4.11  Similar to %, but with a stateful step function. Since: 0.4.11  Similar to {, but with a stateful step  function.  Since: 0.4.9  Similar to |, but with a stateful step  function.  Since: 0.4.9  f x" enumerates an infinite stream of  repeated applications of f to x.  Analogous to .  Since: 0.4.8  Similar to , except the iteration  function is monadic.  Since: 0.4.8 0Enumerates an infinite stream of a single byte.  Analogous to .  Since: 0.4.8 DEnumerates an infinite stream of byte. Each byte is computed by the  underlying monad.  Since: 0.4.8  n x enumerates a stream containing  n copies of x.  Since: 0.4.8  n m_x enumerates a stream of n bytes, with each byte  computed by m_x.  Since: 0.4.8 Like 5, except the computation may terminate the stream by  returning  .  Since: 0.4.8 DApplies a predicate to the stream. The inner iteratee only receives ' characters for which the predicate is True.  Since: 0.4.8 CApplies a monadic predicate to the stream. The inner iteratee only 0 receives bytes for which the predicate returns True.  Since: 0.4.8  n extracts the next n bytes from the  stream, as a lazy  ByteString.  Since: 0.4.5  p; extracts input from the stream until the first byte which  does not match the predicate.  Since: 0.4.5   =  (const True) Since: 0.4.5 HPass input from a stream through two iteratees at once. Excess input is 4 yielded if it was not consumed by either iteratee.  Analogous to . Since: 0.4.14 JPass input from a stream through three iteratees at once. Excess input is 1 yielded if it was not consumed by any iteratee.  Analogous to  . Since: 0.4.14 IPass input from a stream through four iteratees at once. Excess input is 1 yielded if it was not consumed by any iteratee.  Analogous to !. Since: 0.4.14 IPass input from a stream through five iteratees at once. Excess input is 1 yielded if it was not consumed by any iteratee.  Analogous to ". Since: 0.4.14 HPass input from a stream through six iteratees at once. Excess input is 1 yielded if it was not consumed by any iteratee.  Analogous to #. Since: 0.4.14 JPass input from a stream through seven iteratees at once. Excess input is 1 yielded if it was not consumed by any iteratee.  Analogous to $. Since: 0.4.14 HPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to %. Since: 0.4.14 HPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to &. Since: 0.4.14 HPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to '. Since: 0.4.14 HPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to (. Since: 0.4.14 HPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to ). Since: 0.4.14 HPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to *. Since: 0.4.14 &Get the next byte from the stream, or   if the stream has  ended.  Since: 0.4.5 FGet the next element from the stream, or raise an error if the stream  has ended. Since: 0.4.14  n ignores n! bytes of input from the stream.  Since: 0.4.5  p ignores input from the stream : until the first byte which does not match the predicate.  Since: 0.4.5  n buffers input until at least n bytes are available, or + throws an error if the stream ends early.  Since: 0.4.5  n reads at most n( bytes from the stream, and passes them G to its iteratee. If the iteratee finishes early, bytes continue to be & consumed from the outer stream until n have been consumed.  Since: 0.4.5  p# reads bytes from the stream until p is false, and D passes them to its iteratee. If the iteratee finishes early, bytes 5 continue to be consumed from the outer stream until p is false. Since: 0.4.16 -Split on bytes satisfying a given predicate.  Since: 0.4.8 ERead bytes (in chunks of the given buffer size) from the handle, and  stream them to an ). If an exception occurs during file IO,  enumeration will stop and ' will be returned. Exceptions from the  iteratee are not caught. EThis enumerator blocks until at least one byte is available from the B handle, and might read less than the maximum buffer size in some  cases. 5The handle should be opened with no encoding, and in  or  .  Since: 0.4.5 ERead bytes (in chunks of the given buffer size) from the handle, and  stream them to an ). If an exception occurs during file IO,  enumeration will stop and ' will be returned. Exceptions from the  iteratee are not caught. EThis enumerator blocks until at least one byte is available from the B handle, and might read less than the maximum buffer size in some  cases. 5The handle should be opened with no encoding, and in  or  . DIf an offset is specified, the handle will be seeked to that offset B before reading. If the handle cannot be seeked, an error will be  thrown. CIf a maximum count is specified, the number of bytes read will not  exceed that count.  Since: 0.4.8 ;Opens a file path in binary mode, and passes the handle to  5. The file will be closed when enumeration finishes.  Since: 0.4.5 ;Opens a file path in binary mode, and passes the handle to  5. The file will be closed when enumeration finishes.  Since: 0.4.8 ERead bytes from a stream and write them to a handle. If an exception 2 occurs during file IO, enumeration will stop and  will be  returned. 5The handle should be opened with no encoding, and in  or  .  Since: 0.4.5 4wxyz{|}~ Buffer size  Buffer size Offset Maximum count Offset Maximum count 2wxyz{|}~2wx{|}~yz4wxyz{|}~+portablejmillikin@gmail.comNoneDeprecated in 0.4.5: use  instead Deprecated in 0.4.5: use  instead Deprecated in 0.4.5: use  instead portablejmillikin@gmail.comNone3GConsume the entire input stream with a strict left fold, one character  at a time.  Since: 0.4.8 EConsume the entire input stream with a strict monadic left fold, one  character at a time.  Since: 0.4.8 GEnumerates a stream of characters by repeatedly applying a function to  some state.  Similar to .  Since: 0.4.8 GEnumerates a stream of characters by repeatedly applying a computation  to some state.  Similar to .  Since: 0.4.8  f applies f to each input character and 4 feeds the resulting outputs to the inner iteratee.  Since: 0.4.8  f applies f to each input character 8 and feeds the resulting outputs to the inner iteratee.  Since: 0.4.8  f applies f to each input character,  and discards the results. Since: 0.4.11  f applies f to each input B character and feeds the resulting outputs to the inner iteratee.  Since: 0.4.8  f applies f' to each input character and feeds the * resulting outputs to the inner iteratee.  Since: 0.4.8  Similar to , but with a stateful step  function. Since: 0.4.11  Similar to %, but with a stateful step function. Since: 0.4.11  Similar to , but with a stateful step  function.  Since: 0.4.9  Similar to , but with a stateful step  function.  Since: 0.4.9  f x" enumerates an infinite stream of  repeated applications of f to x.  Analogous to .  Since: 0.4.8  Similar to , except the iteration  function is monadic.  Since: 0.4.8 5Enumerates an infinite stream of a single character.  Analogous to .  Since: 0.4.8 HEnumerates an infinite stream of characters. Each character is computed  by the underlying monad.  Since: 0.4.8  n x enumerates a stream containing  n copies of x.  Since: 0.4.8  n m_x enumerates a stream of n characters, with each  character computed by m_x.  Since: 0.4.8 Like 5, except the computation may terminate the stream by  returning  .  Since: 0.4.8 DApplies a predicate to the stream. The inner iteratee only receives ' characters for which the predicate is True.  Since: 0.4.8 CApplies a monadic predicate to the stream. The inner iteratee only 5 receives characters for which the predicate returns True.  Since: 0.4.8  n extracts the next n characters from  the stream, as a lazy Text.  Since: 0.4.5  p: extracts input from the stream until the first character % which does not match the predicate.  Since: 0.4.5   =  (const True) Since: 0.4.5 HPass input from a stream through two iteratees at once. Excess input is 4 yielded if it was not consumed by either iteratee.  Analogous to . Since: 0.4.14 JPass input from a stream through three iteratees at once. Excess input is 1 yielded if it was not consumed by any iteratee.  Analogous to  . Since: 0.4.14 IPass input from a stream through four iteratees at once. Excess input is 1 yielded if it was not consumed by any iteratee.  Analogous to !. Since: 0.4.14 IPass input from a stream through five iteratees at once. Excess input is 1 yielded if it was not consumed by any iteratee.  Analogous to ". Since: 0.4.14 HPass input from a stream through six iteratees at once. Excess input is 1 yielded if it was not consumed by any iteratee.  Analogous to #. Since: 0.4.14 JPass input from a stream through seven iteratees at once. Excess input is 1 yielded if it was not consumed by any iteratee.  Analogous to $. Since: 0.4.14 HPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to %. Since: 0.4.14 HPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to &. Since: 0.4.14 HPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to '. Since: 0.4.14 HPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to (. Since: 0.4.14 HPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to ). Since: 0.4.14 HPass input from a stream through two iteratees at once. Excess input is D yielded if it was not consumed by either iteratee. Output from the 6 iteratees is combined with a user-provided function.  Analogous to *. Since: 0.4.14 +Get the next character from the stream, or   if the stream has  ended.  Since: 0.4.5 FGet the next element from the stream, or raise an error if the stream  has ended. Since: 0.4.14  n ignores n& characters of input from the stream.  Since: 0.4.5  p ignores input from the stream ? until the first character which does not match the predicate.  Since: 0.4.5  n buffers input until at least n characters are available, . or throws an error if the stream ends early.  Since: 0.4.5  n reads at most n( characters from the stream, and passes K them to its iteratee. If the iteratee finishes early, characters continue , to be consumed from the outer stream until n have been consumed.  Since: 0.4.5  p( reads characters from the stream until p is false, and I passes them to its iteratee. If the iteratee finishes early, characters 5 continue to be consumed from the outer stream until p is false. Since: 0.4.16 2Split on characters satisfying a given predicate.  Since: 0.4.8   =  (== '\n') Since: 0.4.8 8Read lines of text from a handle, and stream them to an . B If an exception occurs during file IO, enumeration will stop and  @ will be returned. Exceptions from the iteratee are not caught. CThe handle should be opened with an appropriate text encoding, and  in  or . 5This function may be significantly slower than using  !Data.Enumerator.Binary.enumHandle$, due to the additional overhead of K decoding input data to Unicode. Users who can depend on their input files I being in a certain encoding (such as UTF8) are encouraged to use binary  input and . 'Changed in 0.4.18: Lines streamed from  and  now ! include their trailing newline.  Since: 0.2 6Read lines of text from a file, and stream them to an . B If an exception occurs during file IO, enumeration will stop and  @ will be returned. Exceptions from the iteratee are not caught. BThe file will be opened in text mode, and will be closed when the   finishes. 5This function may be significantly slower than using  Data.Enumerator.Binary.enumFile$, due to the additional overhead of K decoding input data to Unicode. Users who can depend on their input files I being in a certain encoding (such as UTF8) are encouraged to use binary  input and . 'Changed in 0.4.18: Lines streamed from  and  now ! include their trailing newline.  Since: 0.2 BRead text from a stream and write it to a handle. If an exception 2 occurs during file IO, enumeration will stop and  will be  returned. CThe handle should be opened with an appropriate text encoding, and  in  or .  Since: 0.2 CConvert text into bytes, using the provided codec. If the codec is J not capable of representing an input character, an error will be thrown.  Since: 0.2 CConvert bytes into text, using the provided codec. If the codec is J not capable of decoding an input byte sequence, an error will be thrown.  Since: 0.2 J !"#$%&';;F !"#$%&'portablejmillikin@gmail.comNoneLifted version of ( Since: 0.4.16 Lifted version of ) Since: 0.4.16 Lifted version of * Since: 0.4.16 Lifted version of + Since: 0.4.16 Lifted version of (lazy) , Since: 0.4.16 Lifted version of (lazy) - Since: 0.4.16 Lifted version of (strict) . Since: 0.4.16 Lifted version of (strict) / Since: 0.4.16 Lifted version of (lazy) 0 Since: 0.4.16 Lifted version of (lazy) 1 Since: 0.4.16 Lifted version of (strict) 2 Since: 0.4.16 Lifted version of (strict) 1 Since: 0.4.16 Lifted version of (lazy) 3 Since: 0.4.16 Lifted version of (lazy) 4 Since: 0.4.16 Lifted version of (lazy) 5 Since: 0.4.16 Lifted version of (strict) 6 Since: 0.4.16 Lifted version of (strict) 7 Since: 0.4.16 Lifted version of (strict) 8 Since: 0.4.16 9,-../012345678 9:;<=>?@AB    C   DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh !"#$%&'()*ijklmnabcdefgh  !"#$%&'()* i  jklmopqrstabcdefgh  !"#$%&'()* i  jklmuoqsvwxyz{|}~+o+q+stenumerator-0.4.20Data.Enumerator.InternalData.Enumerator.ListData.EnumeratorData.Enumerator.BinaryData.Enumerator.TextData.Enumerator.TransData.Enumerator.UtilData.Enumerator.Compatibilitycontinueheaddrop dropWhile takeWhileconsumefoldfoldMiterateiterateMrepeatrepeatM replicate replicateM generateMmapmapM concatMap concatMapMfilterfilterM Data.Listzipzip3zip4zip5zip6zip7zipWithzipWith3zipWith4zipWith5zipWith6zipWith7Data.Enumerator.IO Enumeratee EnumeratorIteratee runIterateeStepErrorYieldContinueStreamEOFChunksreturnIyield>>====<<$$>==><==<enumEOF checkDoneEx checkDonecheckContinue0checkContinue1liftIspanbreakfoldlfoldl' liftFoldL liftFoldL' liftFoldMrunrun_ throwError catchError printChunksenumList enumListsrunLists runLists_ concatEnumsjoinI=$joinE$==$=sequenceisEOFtryIO liftTranspeeklastlengthunfoldunfoldMmapM_concatMapAccumconcatMapAccumMmapAccum mapAccumMtakehead_requireisolate isolateWhile splitWhenunique enumHandleenumHandleRangeenumFile enumFileRange iterHandleCodeclinesencodedecodeutf8utf16_leutf16_beutf32_leutf32_beascii iso8859_1 runIdentityI runMaybeI runErrorI runReaderI runStateI evalStateI runStateI' evalStateI' runWriterI execWriterI runWriterI' execWriterI'runRWSIevalRWSIexecRWSIrunRWSI' evalRWSI' execRWSI'pad0reprCharreprWordtSpanBytlSpanBy textToStrictbaseGHC.Base$ Control.Monad>=>$fApplicativeStream$fTypeable1Step$fTypeable1Iteratee$fTypeable1Stream$fFunctorStream$fApplicativeIteratee$fFunctorIteratee$fMonadIOIteratee$fMonadTransIteratee$fMonadIteratee$fMonoidStream $fMonadStreamGHC.IOthrowIO GHC.Exception SomeException Data.MaybeNothingGHC.Listcontainers-0.5.0.0 Data.Set.BaseSet GHC.IO.IOModeReadMode ReadWriteMode WriteModegetBytestoChunks codecName codecEncode codecDecode textGetLine byteSplits splitSlowly utf16Requiredutf32SplitBytes illegalEnc illegalDec tryEvaluate maybeDecode $fShowCodectransformers-0.3.0.0Control.Monad.Trans.Identity runIdentityTControl.Monad.Trans.Maybe runMaybeTControl.Monad.Trans.Error runErrorTControl.Monad.Trans.Reader runReaderTControl.Monad.Trans.State.Lazy runStateT evalStateT Control.Monad.Trans.State.StrictControl.Monad.Trans.Writer.Lazy runWriterT execWriterT!Control.Monad.Trans.Writer.StrictControl.Monad.Trans.RWS.LazyrunRWSTevalRWSTexecRWSTControl.Monad.Trans.RWS.Strict