Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 0b5d03d6b0fe6eec9f6a8cc33941032f > files > 31

ghc-enumerator-devel-0.4.13.1-1.fc14.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
><TITLE
>Data.Enumerator</TITLE
><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
></SCRIPT
><SCRIPT TYPE="text/javascript"
>window.onload = function () {setSynopsis("mini_Data-Enumerator.html")};</SCRIPT
></HEAD
><BODY
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="topbar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
></TD
><TD CLASS="title"
>enumerator-0.4.13.1: Reliable, high-performance processing with left-fold enumerators</TD
><TD CLASS="topbut"
><A HREF="src/Data-Enumerator.html"
>Source code</A
></TD
><TD CLASS="topbut"
><A HREF="index.html"
>Contents</A
></TD
><TD CLASS="topbut"
><A HREF="doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="modulebar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><FONT SIZE="6"
>Data.Enumerator</FONT
></TD
><TD ALIGN="right"
><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="infohead"
>Portability</TD
><TD CLASS="infoval"
>portable</TD
></TR
><TR
><TD CLASS="infohead"
>Maintainer</TD
><TD CLASS="infoval"
>jmillikin@gmail.com</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
><B
>Contents</B
></TD
></TR
><TR
><TD
><DL
><DT
><A HREF="#1"
>Types
</A
></DT
><DT
><A HREF="#2"
>Primitives
</A
></DT
><DD
><DL
><DT
><A HREF="#3"
>Operators
</A
></DT
><DT
><A HREF="#4"
>Running iteratees
</A
></DT
><DT
><A HREF="#5"
>Error handling
</A
></DT
></DL
></DD
><DT
><A HREF="#6"
>Miscellaneous
</A
></DT
><DD
><DL
><DT
><A HREF="#7"
>Testing and debugging
</A
></DT
></DL
></DD
><DT
><A HREF="#8"
>Legacy compatibility
</A
></DT
><DD
><DL
><DT
><A HREF="#9"
>Obsolete
</A
></DT
><DT
><A HREF="#10"
>Aliases
</A
></DT
></DL
></DD
></DL
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Description</TD
></TR
><TR
><TD CLASS="doc"
><P
>Core enumerator types, and some useful primitives.
</P
><P
>This module is intended to be imported qualified:
</P
><PRE
>
 import qualified Data.Enumerator as E
</PRE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Synopsis</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AStream"
>Stream</A
> a </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3AChunks"
>Chunks</A
> [a]</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AEOF"
>EOF</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>newtype</SPAN
>  <A HREF="#t%3AIteratee"
>Iteratee</A
> a m b = <A HREF="#v%3AIteratee"
>Iteratee</A
> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="recfield"
><A HREF="#v%3ArunIteratee"
>runIteratee</A
> :: m (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b)</TD
></TR
></TABLE
>}</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AStep"
>Step</A
> a m b </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3AContinue"
>Continue</A
> (<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b)</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AYield"
>Yield</A
> b (<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AError"
>Error</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3ASomeException"
>SomeException</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AEnumerator"
>Enumerator</A
> a m b = <A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b = <A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> ai m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> ao m (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> ai m b)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AreturnI"
>returnI</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Acontinue"
>continue</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Ayield"
>yield</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; b -&gt; <A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3A%3E%3E%3D%3D"
>(&gt;&gt;==)</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b -&gt; (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b') -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b'</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3A%3D%3D%3C%3C"
>(==&lt;&lt;)</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b') -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b'</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3A%24%24"
>($$)</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b') -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b'</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3A%3E%3D%3D%3E"
>(&gt;==&gt;)</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b -&gt; (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b') -&gt; <A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b'</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3A%3C%3D%3D%3C"
>(&lt;==&lt;)</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b') -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b'</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3A%3D%24"
>(=$)</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> ai m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> ao m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3A%24%3D"
>($=)</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> ao m (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> ai m b) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> ai m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Arun"
>run</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b -&gt; m (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Either.html#t%3AEither"
>Either</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3ASomeException"
>SomeException</A
> b)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Arun_"
>run_</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b -&gt; m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AthrowError"
>throwError</A
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3AException"
>Exception</A
> e) =&gt; e -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AcatchError"
>catchError</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3ASomeException"
>SomeException</A
> -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AconcatEnums"
>concatEnums</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; [<A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b] -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AjoinI"
>joinI</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a' m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AjoinE"
>joinE</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> ao m (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> ai m b) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> ai m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Asequence"
>sequence</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> ao m ai -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AenumEOF"
>enumEOF</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AcheckContinue0"
>checkContinue0</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b -&gt; (<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AcheckContinue1"
>checkContinue1</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; ((s1 -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b) -&gt; s1 -&gt; (<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; s1 -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AcheckDoneEx"
>checkDoneEx</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a' -&gt; ((<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b)) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> a' a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AcheckDone"
>checkDone</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; ((<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b)) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> a' a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AisEOF"
>isEOF</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AtryIO"
>tryIO</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/transformers-0.2.2.0/Control-Monad-IO-Class.html#t%3AMonadIO"
>MonadIO</A
> m =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AprintChunks"
>printChunks</A
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/transformers-0.2.2.0/Control-Monad-IO-Class.html#t%3AMonadIO"
>MonadIO</A
> m, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow"
>Show</A
> a) =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
> -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AenumList"
>enumList</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; [a] -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AliftTrans"
>liftTrans</A
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m, <A HREF="/usr/share/doc/ghc/html/libraries/transformers-0.2.2.0/Control-Monad-Trans-Class.html#t%3AMonadTrans"
>MonadTrans</A
> t, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> (t m)) =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a (t m) b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AliftI"
>liftI</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Apeek"
>peek</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Alast"
>last</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Alength"
>length</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Ahead"
>head</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Adrop"
>drop</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AdropWhile"
>dropWhile</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aspan"
>span</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m [a]</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Abreak"
>break</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m [a]</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aconsume"
>consume</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m [a]</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Afoldl"
>foldl</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (b -&gt; a -&gt; b) -&gt; b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Afoldl%27"
>foldl'</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (b -&gt; a -&gt; b) -&gt; b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AfoldM"
>foldM</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (b -&gt; a -&gt; m b) -&gt; b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aiterate"
>iterate</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (a -&gt; a) -&gt; a -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AiterateM"
>iterateM</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (a -&gt; m a) -&gt; a -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Arepeat"
>repeat</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; a -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArepeatM"
>repeatM</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; m a -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Areplicate"
>replicate</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; a -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AreplicateM"
>replicateM</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; m a -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AgenerateM"
>generateM</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; m (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Amap"
>map</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (ao -&gt; ai) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmapM"
>mapM</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (ao -&gt; m ai) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AconcatMap"
>concatMap</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (ao -&gt; [ai]) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AconcatMapM"
>concatMapM</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (ao -&gt; m [ai]) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Afilter"
>filter</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> a a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AfilterM"
>filterM</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (a -&gt; m <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> a a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AliftFoldL"
>liftFoldL</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (b -&gt; a -&gt; b) -&gt; b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AliftFoldL%27"
>liftFoldL'</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (b -&gt; a -&gt; b) -&gt; b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AliftFoldM"
>liftFoldM</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (b -&gt; a -&gt; m b) -&gt; b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="1"
><A NAME="1"
>Types
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:Stream"
><A NAME="t%3AStream"
></A
></A
><B
>Stream</B
> a </TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#Stream"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
><P
>A <TT
><A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
></TT
> is a sequence of chunks generated by an <TT
><A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
></TT
>.
</P
><P
><TT
>(<TT
><A HREF="Data-Enumerator.html#v%3AChunks"
>Chunks</A
></TT
> [])</TT
> is used to indicate that a stream is still active, but
 currently has no available data. Iteratees should ignore empty chunks.
</P
></TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:Chunks"
><A NAME="v%3AChunks"
></A
></A
><B
>Chunks</B
> [a]</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:EOF"
><A NAME="v%3AEOF"
></A
></A
><B
>EOF</B
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Stream')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:Stream" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> <A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AFunctor"
>Functor</A
> <A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeable1"
>Typeable1</A
> <A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Applicative.html#t%3AApplicative"
>Applicative</A
> <A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq"
>Eq</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq"
>Eq</A
> (<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow"
>Show</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow"
>Show</A
> (<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Monoid.html#t%3AMonoid"
>Monoid</A
> (<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a)</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>newtype</SPAN
>  <A NAME="t:Iteratee"
><A NAME="t%3AIteratee"
></A
></A
><B
>Iteratee</B
> a m b </TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#Iteratee"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
><P
>The primary data type for this library, which consumes
 input from a <TT
><A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
></TT
> until it either generates a value or encounters
 an error. Rather than requiring all input at once, an iteratee will
 return <TT
><A HREF="Data-Enumerator.html#v%3AContinue"
>Continue</A
></TT
> when it is capable of processing more data.
</P
><P
>In general, iteratees begin in the <TT
><A HREF="Data-Enumerator.html#v%3AContinue"
>Continue</A
></TT
> state. As each chunk is
 passed to the continuation, the iteratee returns the next step:
 <TT
><A HREF="Data-Enumerator.html#v%3AContinue"
>Continue</A
></TT
> for more data, <TT
><A HREF="Data-Enumerator.html#v%3AYield"
>Yield</A
></TT
> when it's finished, or <TT
><A HREF="Data-Enumerator.html#v%3AError"
>Error</A
></TT
> to
 abort processing.
</P
></TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:Iteratee"
><A NAME="v%3AIteratee"
></A
></A
><B
>Iteratee</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="body" COLSPAN="2"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:runIteratee"
><A NAME="v%3ArunIteratee"
></A
></A
><B
>runIteratee</B
> :: m (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b)</TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Iteratee')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:Iteratee" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/transformers-0.2.2.0/Control-Monad-Trans-Class.html#t%3AMonadTrans"
>MonadTrans</A
> (<A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> (<A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AFunctor"
>Functor</A
> (<A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeable1"
>Typeable1</A
> m) =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeable1"
>Typeable1</A
> (<A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Applicative.html#t%3AApplicative"
>Applicative</A
> (<A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/transformers-0.2.2.0/Control-Monad-IO-Class.html#t%3AMonadIO"
>MonadIO</A
> m =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/transformers-0.2.2.0/Control-Monad-IO-Class.html#t%3AMonadIO"
>MonadIO</A
> (<A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m)</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:Step"
><A NAME="t%3AStep"
></A
></A
><B
>Step</B
> a m b </TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#Step"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:Continue"
><A NAME="v%3AContinue"
></A
></A
><B
>Continue</B
> (<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b)</TD
><TD CLASS="rdoc"
>The <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
> is capable of accepting more input. Note that more input
 is not necessarily required; the <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
> might be able to generate a
 value immediately if it receives <TT
><A HREF="Data-Enumerator.html#v%3AEOF"
>EOF</A
></TT
>.
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:Yield"
><A NAME="v%3AYield"
></A
></A
><B
>Yield</B
> b (<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a)</TD
><TD CLASS="rdoc"
>The <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
> cannot receive any more input, and has generated a
 result. Included in this value is left-over input, which can be passed to
 composed <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
>s.
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:Error"
><A NAME="v%3AError"
></A
></A
><B
>Error</B
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3ASomeException"
>SomeException</A
></TD
><TD CLASS="rdoc"
>The <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
> encountered an error which prevents it from proceeding
 further.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Step')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:Step" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
>(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeable1"
>Typeable1</A
> m) =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeable1"
>Typeable1</A
> (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m)</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:Enumerator"
><A NAME="t%3AEnumerator"
></A
></A
><B
>Enumerator</B
> a m b = <A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#Enumerator"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>While <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
>s consume data, enumerators generate it. Since
 <TT
><TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
></TT
> is an alias for <TT
>m (<TT
><A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
></TT
> a m b)</TT
>, <TT
><A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
></TT
>s can
 be considered step transformers of type
 <TT
><TT
><A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
></TT
> a m b -&gt; m (<TT
><A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
></TT
> a m b)</TT
>.
</P
><P
><TT
><A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
></TT
>s typically read from an external source (parser, handle,
 random generator, etc). They feed chunks into an <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
> until the
 source runs out of data (triggering <TT
><A HREF="Data-Enumerator.html#v%3AEOF"
>EOF</A
></TT
>) or the iteratee finishes
 processing (<TT
><A HREF="Data-Enumerator.html#v%3AYield"
>Yield</A
></TT
>s a value).
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:Enumeratee"
><A NAME="t%3AEnumeratee"
></A
></A
><B
>Enumeratee</B
> ao ai m b = <A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> ai m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> ao m (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> ai m b)</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#Enumeratee"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>In cases where an enumerator acts as both a source and sink, the resulting
 type is named an <TT
><A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
></TT
>. Enumeratees have two input types,
 &#x201c;outer a&#x201d; (<TT
>aOut</TT
>) and &#x201c;inner a&#x201d; (<TT
>aIn</TT
>).
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="2"
><A NAME="2"
>Primitives
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:returnI"
><A NAME="v%3AreturnI"
></A
></A
><B
>returnI</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#returnI"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><PRE
><TT
><A HREF="Data-Enumerator.html#v%3AreturnI"
>returnI</A
></TT
> step = <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
> (return step)</PRE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:continue"
><A NAME="v%3Acontinue"
></A
></A
><B
>continue</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#continue"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><PRE
><TT
><A HREF="Data-Enumerator.html#v%3Acontinue"
>continue</A
></TT
> k = <TT
><A HREF="Data-Enumerator.html#v%3AreturnI"
>returnI</A
></TT
> (<TT
><A HREF="Data-Enumerator.html#v%3AContinue"
>Continue</A
></TT
> k)</PRE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:yield"
><A NAME="v%3Ayield"
></A
></A
><B
>yield</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; b -&gt; <A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#yield"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><PRE
><TT
><A HREF="Data-Enumerator.html#v%3Ayield"
>yield</A
></TT
> x extra = <TT
><A HREF="Data-Enumerator.html#v%3AreturnI"
>returnI</A
></TT
> (<TT
><A HREF="Data-Enumerator.html#v%3AYield"
>Yield</A
></TT
> x extra)</PRE
><P
>WARNING: due to the current encoding of iteratees in this library,
 careless use of the <TT
><A HREF="Data-Enumerator.html#v%3Ayield"
>yield</A
></TT
> primitive may violate the monad laws.
 To prevent this, always make sure that an iteratee never yields
 extra data unless it has received at least one input element.
</P
><P
>More strictly, iteratees may not yield data that they did not
 receive as input. Don't use <TT
><A HREF="Data-Enumerator.html#v%3Ayield"
>yield</A
></TT
> to &#x201c;inject&#x201d; elements
 into the stream.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="3"
><A NAME="3"
>Operators
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:>>=="
><A NAME="v%3A%3E%3E%3D%3D"
></A
></A
><B
>(&gt;&gt;==)</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b -&gt; (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b') -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b'</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#%3E%3E%3D%3D"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Equivalent to '(&gt;&gt;=)' for <TT
>m (<TT
><A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
></TT
> a m b)</TT
>; allows <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
>s with
 different input types to be composed.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:==<<"
><A NAME="v%3A%3D%3D%3C%3C"
></A
></A
><B
>(==&lt;&lt;)</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b') -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b'</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#%3D%3D%3C%3C"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><PRE
>'(==&lt;&lt;)' = flip '(&gt;&gt;==)'</PRE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:$$"
><A NAME="v%3A%24%24"
></A
></A
><B
>($$)</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b') -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b'</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#%24%24"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><PRE
>'($$)' = '(==&lt;&lt;)'</PRE
><P
>This might be easier to read when passing a chain of iteratees to an
 enumerator.
</P
><P
>Since: 0.1.1
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:>==>"
><A NAME="v%3A%3E%3D%3D%3E"
></A
></A
><B
>(&gt;==&gt;)</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b -&gt; (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b') -&gt; <A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b'</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#%3E%3D%3D%3E"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><PRE
>'(&gt;==&gt;)' e1 e2 s = e1 s <TT
><A HREF="Data-Enumerator.html#v%3A%3E%3E%3D%3D"
>&gt;&gt;==</A
></TT
> e2</PRE
><P
>Since: 0.1.1
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:<==<"
><A NAME="v%3A%3C%3D%3D%3C"
></A
></A
><B
>(&lt;==&lt;)</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b') -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m b'</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#%3C%3D%3D%3C"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><PRE
>'(&lt;==&lt;)' = flip '(&gt;==&gt;)'</PRE
><P
>Since: 0.1.1
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:=$"
><A NAME="v%3A%3D%24"
></A
></A
><B
>(=$)</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> ai m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> ao m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#%3D%24"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><PRE
>enum =$ iter = <TT
><A HREF="Data-Enumerator.html#v%3AjoinI"
>joinI</A
></TT
> (enum $$ iter)</PRE
><P
>&#x201c;Wraps&#x201d; an iteratee <EM
>inner</EM
> in an enumeratee <EM
>wrapper</EM
>.
 The resulting iteratee will consume <EM
>wrapper</EM
>&#x2019;s input type and
 yield <EM
>inner</EM
>&#x2019;s output type.
</P
><P
>Note: if the inner iteratee yields leftover input when it finishes,
 that extra will be discarded.
</P
><P
>As an example, consider an iteratee that converts a stream of UTF8-encoded
 bytes into a single TL.Text:
</P
><PRE
> consumeUTF8 :: Monad m =&gt; Iteratee ByteString m Text
</PRE
><P
>It could be written with either <TT
><A HREF="Data-Enumerator.html#v%3AjoinI"
>joinI</A
></TT
> or '(=$)':
</P
><PRE
> import Data.Enumerator.Text as ET

 consumeUTF8 = joinI (decode utf8 $$ ET.consume)
 consumeUTF8 = decode utf8 =$ ET.consume
</PRE
><P
>Since: 0.4.9
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:$="
><A NAME="v%3A%24%3D"
></A
></A
><B
>($=)</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> ao m (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> ai m b) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> ai m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#%24%3D"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><PRE
>enum $= enee = <TT
><A HREF="Data-Enumerator.html#v%3AjoinE"
>joinE</A
></TT
> enum enee</PRE
><P
>&#x201c;Wraps&#x201d; an enumerator <EM
>inner</EM
> in an enumeratee <EM
>wrapper</EM
>.
 The resulting enumerator will generate <EM
>wrapper</EM
>&#x2019;s output type.
</P
><P
>As an example, consider an enumerator that yields line character counts
 for a text file (e.g. for source code readability checking):
</P
><PRE
> enumFileCounts :: FilePath -&gt; Enumerator Int IO b
</PRE
><P
>It could be written with either <TT
><A HREF="Data-Enumerator.html#v%3AjoinE"
>joinE</A
></TT
> or '($=)':
</P
><PRE
> 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)
 enumFileCounts path = enumFile path $= EL.map T.length
</PRE
><P
>Since: 0.4.9
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="4"
><A NAME="4"
>Running iteratees
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:run"
><A NAME="v%3Arun"
></A
></A
><B
>run</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b -&gt; m (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Either.html#t%3AEither"
>Either</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3ASomeException"
>SomeException</A
> b)</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#run"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Run an iteratee until it finishes, and return either the final value
 (if it succeeded) or the error (if it failed).
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:run_"
><A NAME="v%3Arun_"
></A
></A
><B
>run_</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b -&gt; m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#run_"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Like <TT
><A HREF="Data-Enumerator.html#v%3Arun"
>run</A
></TT
>, except errors are converted to exceptions and thrown.
 Primarily useful for small scripts or other simple cases.
</P
><P
>Since: 0.4.1
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="5"
><A NAME="5"
>Error handling
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:throwError"
><A NAME="v%3AthrowError"
></A
></A
><B
>throwError</B
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3AException"
>Exception</A
> e) =&gt; e -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#throwError"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><PRE
><TT
><A HREF="Data-Enumerator.html#v%3AthrowError"
>throwError</A
></TT
> exc = <TT
><A HREF="Data-Enumerator.html#v%3AreturnI"
>returnI</A
></TT
> (<TT
><A HREF="Data-Enumerator.html#v%3AError"
>Error</A
></TT
> (<TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#v%3AtoException"
>toException</A
></TT
> exc))</PRE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:catchError"
><A NAME="v%3AcatchError"
></A
></A
><B
>catchError</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3ASomeException"
>SomeException</A
> -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#catchError"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Runs the iteratee, and calls an exception handler if an <TT
><A HREF="Data-Enumerator.html#v%3AError"
>Error</A
></TT
> is
 returned. By handling errors within the enumerator library, and requiring
 all errors to be represented by <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3ASomeException"
>SomeException</A
></TT
>, libraries with
 varying error types can be easily composed.
</P
><P
>WARNING: after a few rounds of <A HREF="catchError doesn't work because X.html"
>catchError doesn't work because X</A
>, this
 function has grown into a horrible monster. I have no concept of what
 unexpected behaviors lurk in its dark crevices. Users are strongly advised
 to wrap all uses of <TT
>catchError</TT
> with an appropriate <TT
>isolate</TT
>, such as
 <TT
>Data.Enumerator.List.isolate</TT
> or <TT
>Data.Enumerator.Binary.isolate</TT
>, which
 will handle input framing even in the face of unexpected errors.
</P
><P
>Within the error handler, it is difficult or impossible to know how much
 input the original iteratee has consumed.
</P
><P
>Since: 0.1.1
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="6"
><A NAME="6"
>Miscellaneous
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:concatEnums"
><A NAME="v%3AconcatEnums"
></A
></A
><B
>concatEnums</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; [<A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b] -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#concatEnums"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Compose a list of <TT
><A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
></TT
>s using <TT
>'(&gt;&gt;==)'</TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:joinI"
><A NAME="v%3AjoinI"
></A
></A
><B
>joinI</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a' m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#joinI"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><TT
><A HREF="Data-Enumerator.html#v%3AjoinI"
>joinI</A
></TT
> is used to &#x201c;flatten&#x201d; <TT
><A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
></TT
>s into an
 <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:joinE"
><A NAME="v%3AjoinE"
></A
></A
><B
>joinE</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> ao m (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> ai m b) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> ai m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#joinE"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Flatten an enumerator/enumeratee pair into a single enumerator.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:sequence"
><A NAME="v%3Asequence"
></A
></A
><B
>sequence</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> ao m ai -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#sequence"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Feeds outer input elements into the provided iteratee until it yields
 an inner input, passes that to the inner iteratee, and then loops.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:enumEOF"
><A NAME="v%3AenumEOF"
></A
></A
><B
>enumEOF</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#enumEOF"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Sends <TT
><A HREF="Data-Enumerator.html#v%3AEOF"
>EOF</A
></TT
> to its iteratee. Most clients should use <TT
><A HREF="Data-Enumerator.html#v%3Arun"
>run</A
></TT
> or <TT
><A HREF="Data-Enumerator.html#v%3Arun_"
>run_</A
></TT
>
 instead.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:checkContinue0"
><A NAME="v%3AcheckContinue0"
></A
></A
><B
>checkContinue0</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b -&gt; (<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#checkContinue0"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>A common pattern in <TT
><A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
></TT
> implementations is to check whether
 the inner <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
> has finished, and if so, to return its output.
 <TT
><A HREF="Data-Enumerator.html#v%3AcheckContinue0"
>checkContinue0</A
></TT
> passes its parameter a continuation if the <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
>
 can still consume input; if not, it returns the iteratee's step.
</P
><P
>The type signature here is a bit crazy, but it's actually very easy to
 use. Take this code:
</P
><PRE
> repeat :: Monad m =&gt; a -&gt; Enumerator a m b
 repeat x = loop where
 	loop (Continue k) = k (Chunks [x]) &gt;&gt;== loop
 	loop step = returnI step
</PRE
><P
>And rewrite it without the boilerplate:
</P
><PRE
> repeat :: Monad m =&gt; a -&gt; Enumerator a m b
 repeat x = checkContinue0 $ \loop k -&gt; k (Chunks [x] &gt;&gt;== loop
</PRE
><P
>Since: 0.4.9
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:checkContinue1"
><A NAME="v%3AcheckContinue1"
></A
></A
><B
>checkContinue1</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; ((s1 -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b) -&gt; s1 -&gt; (<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; s1 -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#checkContinue1"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Like <TT
><A HREF="Data-Enumerator.html#v%3AcheckContinue0"
>checkContinue0</A
></TT
>, but allows each loop step to use a state value:
</P
><PRE
> iterate :: Monad m =&gt; (a -&gt; a) -&gt; a -&gt; Enumerator a m b
 iterate f = checkContinue1 $ \loop a k -&gt; k (Chunks [a]) &gt;&gt;== loop (f a)
</PRE
><P
>Since: 0.4.9
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:checkDoneEx"
><A NAME="v%3AcheckDoneEx"
></A
></A
><B
>checkDoneEx</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a' -&gt; ((<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b)) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> a' a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#checkDoneEx"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>A common pattern in <TT
><A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
></TT
> implementations is to check whether
 the inner <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
> has finished, and if so, to return its output.
 <TT
><A HREF="Data-Enumerator.html#v%3AcheckDone"
>checkDone</A
></TT
> passes its parameter a continuation if the <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
>
 can still consume input, or yields otherwise.
</P
><P
>Since: 0.4.3
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:checkDone"
><A NAME="v%3AcheckDone"
></A
></A
><B
>checkDone</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; ((<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a' m (<A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b)) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> a' a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#checkDone"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><PRE
><TT
><A HREF="Data-Enumerator.html#v%3AcheckDone"
>checkDone</A
></TT
> = <TT
><A HREF="Data-Enumerator.html#v%3AcheckDoneEx"
>checkDoneEx</A
></TT
> (<TT
><A HREF="Data-Enumerator.html#v%3AChunks"
>Chunks</A
></TT
> [])</PRE
><P
>Use this for enumeratees which do not have an input buffer.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:isEOF"
><A NAME="v%3AisEOF"
></A
></A
><B
>isEOF</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#isEOF"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Check whether a stream has reached EOF. Most clients should use
 Data.Enumerator.List.head instead.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:tryIO"
><A NAME="v%3AtryIO"
></A
></A
><B
>tryIO</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/transformers-0.2.2.0/Control-Monad-IO-Class.html#t%3AMonadIO"
>MonadIO</A
> m =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#tryIO"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Try to run an IO computation. If it throws an exception, the exception
 is caught and converted into an {tt Error}.
</P
><P
>Since: 0.4.9
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="7"
><A NAME="7"
>Testing and debugging
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:printChunks"
><A NAME="v%3AprintChunks"
></A
></A
><B
>printChunks</B
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#printChunks"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: (<A HREF="/usr/share/doc/ghc/html/libraries/transformers-0.2.2.0/Control-Monad-IO-Class.html#t%3AMonadIO"
>MonadIO</A
> m, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow"
>Show</A
> a)</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
></TD
><TD CLASS="rdoc"
>Print empty chunks
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>Print chunks as they're received from the enumerator, optionally
 printing empty chunks.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:enumList"
><A NAME="v%3AenumList"
></A
></A
><B
>enumList</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; [a] -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#enumList"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
><TT
><TT
><A HREF="Data-Enumerator.html#v%3AenumList"
>enumList</A
></TT
> n xs</TT
> enumerates <EM
>xs</EM
> as a stream, passing <EM
>n</EM
> inputs per
 chunk.
</P
><P
>Primarily useful for testing and debugging.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="8"
><A NAME="8"
>Legacy compatibility
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="9"
><A NAME="9"
>Obsolete
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:liftTrans"
><A NAME="v%3AliftTrans"
></A
></A
><B
>liftTrans</B
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m, <A HREF="/usr/share/doc/ghc/html/libraries/transformers-0.2.2.0/Control-Monad-Trans-Class.html#t%3AMonadTrans"
>MonadTrans</A
> t, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> (t m)) =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a (t m) b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#liftTrans"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Lift an <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
> onto a monad transformer, re-wrapping the
 <TT
><A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
></TT
>&#x2019;s inner monadic values.
</P
><P
>Since: 0.1.1
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:liftI"
><A NAME="v%3AliftI"
></A
></A
><B
>liftI</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="Data-Enumerator.html#t%3AStream"
>Stream</A
> a -&gt; <A HREF="Data-Enumerator.html#t%3AStep"
>Step</A
> a m b) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#liftI"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Deprecated in 0.4.5: use <TT
><A HREF="Data-Enumerator.html#v%3Acontinue"
>continue</A
></TT
> instead
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:peek"
><A NAME="v%3Apeek"
></A
></A
><B
>peek</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a)</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#peek"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Peek at the next element in the stream, or <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#v%3ANothing"
>Nothing</A
></TT
> if the stream
 has ended.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:last"
><A NAME="v%3Alast"
></A
></A
><B
>last</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a)</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#last"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Get the last element in the stream, or <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#v%3ANothing"
>Nothing</A
></TT
> if the stream
 has ended.
</P
><P
>Consumes the entire stream.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:length"
><A NAME="v%3Alength"
></A
></A
><B
>length</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#length"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Get how many elements remained in the stream.
</P
><P
>Consumes the entire stream.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="10"
><A NAME="10"
>Aliases
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:head"
><A NAME="v%3Ahead"
></A
></A
><B
>head</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a)</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#head"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Deprecated in 0.4.5: use Data.Enumerator.List.head instead
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:drop"
><A NAME="v%3Adrop"
></A
></A
><B
>drop</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#drop"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Deprecated in 0.4.5: use Data.Enumerator.List.drop instead
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:dropWhile"
><A NAME="v%3AdropWhile"
></A
></A
><B
>dropWhile</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#dropWhile"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Deprecated in 0.4.5: use Data.Enumerator.List.dropWhile instead
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:span"
><A NAME="v%3Aspan"
></A
></A
><B
>span</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m [a]</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#span"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Deprecated in 0.4.5: use Data.Enumerator.List.takeWhile instead
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:break"
><A NAME="v%3Abreak"
></A
></A
><B
>break</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>) -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m [a]</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#break"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Deprecated in 0.4.5: use Data.Enumerator.List.takeWhile instead
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:consume"
><A NAME="v%3Aconsume"
></A
></A
><B
>consume</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m [a]</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#consume"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Deprecated in 0.4.5: use Data.Enumerator.List.consume instead
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:foldl"
><A NAME="v%3Afoldl"
></A
></A
><B
>foldl</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (b -&gt; a -&gt; b) -&gt; b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#foldl"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.8: use Data.Enumerator.List.fold instead
</P
><P
>Since: 0.4.5
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:foldl'"
><A NAME="v%3Afoldl%27"
></A
></A
><B
>foldl'</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (b -&gt; a -&gt; b) -&gt; b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#foldl%27"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.8: use Data.Enumerator.List.fold instead
</P
><P
>Since: 0.4.5
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:foldM"
><A NAME="v%3AfoldM"
></A
></A
><B
>foldM</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (b -&gt; a -&gt; m b) -&gt; b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#foldM"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.8: use Data.Enumerator.List.foldM instead
</P
><P
>Since: 0.4.5
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:iterate"
><A NAME="v%3Aiterate"
></A
></A
><B
>iterate</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (a -&gt; a) -&gt; a -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#iterate"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.8: use Data.Enumerator.List.iterate instead
</P
><P
>Since: 0.4.5
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:iterateM"
><A NAME="v%3AiterateM"
></A
></A
><B
>iterateM</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (a -&gt; m a) -&gt; a -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#iterateM"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.8: use Data.Enumerator.List.iterateM instead
</P
><P
>Since: 0.4.5
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:repeat"
><A NAME="v%3Arepeat"
></A
></A
><B
>repeat</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; a -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#repeat"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.8: use Data.Enumerator.List.repeat instead
</P
><P
>Since: 0.4.5
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:repeatM"
><A NAME="v%3ArepeatM"
></A
></A
><B
>repeatM</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; m a -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#repeatM"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.8: use Data.Enumerator.List.repeatM instead
</P
><P
>Since: 0.4.5
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:replicate"
><A NAME="v%3Areplicate"
></A
></A
><B
>replicate</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; a -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#replicate"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.8: use Data.Enumerator.List.replicate instead
</P
><P
>Since: 0.4.5
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:replicateM"
><A NAME="v%3AreplicateM"
></A
></A
><B
>replicateM</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; m a -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#replicateM"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.8: use Data.Enumerator.List.replicateM instead
</P
><P
>Since: 0.4.5
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:generateM"
><A NAME="v%3AgenerateM"
></A
></A
><B
>generateM</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; m (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumerator"
>Enumerator</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#generateM"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.8: use Data.Enumerator.List.generateM instead
</P
><P
>Since: 0.4.5
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:map"
><A NAME="v%3Amap"
></A
></A
><B
>map</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (ao -&gt; ai) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#map"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Deprecated in 0.4.8: use Data.Enumerator.List.map instead
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:mapM"
><A NAME="v%3AmapM"
></A
></A
><B
>mapM</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (ao -&gt; m ai) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#mapM"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.8: use Data.Enumerator.List.mapM instead
</P
><P
>Since: 0.4.3
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:concatMap"
><A NAME="v%3AconcatMap"
></A
></A
><B
>concatMap</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (ao -&gt; [ai]) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#concatMap"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.8: use Data.Enumerator.List.concatMap instead
</P
><P
>Since: 0.4.3
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:concatMapM"
><A NAME="v%3AconcatMapM"
></A
></A
><B
>concatMapM</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (ao -&gt; m [ai]) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> ao ai m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#concatMapM"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.8: use Data.Enumerator.List.concatMapM instead
</P
><P
>Since: 0.4.5
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:filter"
><A NAME="v%3Afilter"
></A
></A
><B
>filter</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> a a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#filter"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.8: use Data.Enumerator.List.filter instead
</P
><P
>Since: 0.4.5
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:filterM"
><A NAME="v%3AfilterM"
></A
></A
><B
>filterM</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (a -&gt; m <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>) -&gt; <A HREF="Data-Enumerator.html#t%3AEnumeratee"
>Enumeratee</A
> a a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#filterM"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.8: use Data.Enumerator.List.filterM instead
</P
><P
>Since: 0.4.5
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:liftFoldL"
><A NAME="v%3AliftFoldL"
></A
></A
><B
>liftFoldL</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (b -&gt; a -&gt; b) -&gt; b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#liftFoldL"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.5: use Data.Enumerator.List.fold instead
</P
><P
>Since: 0.1.1
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:liftFoldL'"
><A NAME="v%3AliftFoldL%27"
></A
></A
><B
>liftFoldL'</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (b -&gt; a -&gt; b) -&gt; b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#liftFoldL%27"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.5: use Data.Enumerator.List.fold instead
</P
><P
>Since: 0.1.1
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:liftFoldM"
><A NAME="v%3AliftFoldM"
></A
></A
><B
>liftFoldM</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (b -&gt; a -&gt; m b) -&gt; b -&gt; <A HREF="Data-Enumerator.html#t%3AIteratee"
>Iteratee</A
> a m b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Enumerator.html#liftFoldM"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Deprecated in 0.4.5: use Data.Enumerator.List.foldM instead
</P
><P
>Since: 0.1.1
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="botbar"
>Produced by <A HREF="http://www.haskell.org/haddock/"
>Haddock</A
> version 2.6.1</TD
></TR
></TABLE
></BODY
></HTML
>