<!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 -> <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 -> <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 -> <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 => <A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <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 => (<A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> <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 => b -> <A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a -> <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" >(>>==)</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad" >Monad</A > m => <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b -> (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a' m b') -> <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" >(==<<)</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad" >Monad</A > m => (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a' m b') -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b -> <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 => (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a' m b') -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b -> <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" >(>==>)</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad" >Monad</A > m => <A HREF="Data-Enumerator.html#t%3AEnumerator" >Enumerator</A > a m b -> (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a' m b') -> <A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <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" >(<==<)</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad" >Monad</A > m => (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a' m b') -> <A HREF="Data-Enumerator.html#t%3AEnumerator" >Enumerator</A > a m b -> <A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <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 => <A HREF="Data-Enumerator.html#t%3AEnumeratee" >Enumeratee</A > ao ai m b -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > ai m b -> <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 => <A HREF="Data-Enumerator.html#t%3AEnumerator" >Enumerator</A > ao m (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > ai m b) -> <A HREF="Data-Enumerator.html#t%3AEnumeratee" >Enumeratee</A > ao ai m b -> <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 => <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b -> 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 => <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b -> 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) => e -> <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 => <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b -> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3ASomeException" >SomeException</A > -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> <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 => [<A HREF="Data-Enumerator.html#t%3AEnumerator" >Enumerator</A > a m b] -> <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 => <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a' m b) -> <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 => <A HREF="Data-Enumerator.html#t%3AEnumerator" >Enumerator</A > ao m (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > ai m b) -> <A HREF="Data-Enumerator.html#t%3AEnumeratee" >Enumeratee</A > ao ai m b -> <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 => <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > ao m ai -> <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 => <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 => (<A HREF="Data-Enumerator.html#t%3AEnumerator" >Enumerator</A > a m b -> (<A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> <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 => ((s1 -> <A HREF="Data-Enumerator.html#t%3AEnumerator" >Enumerator</A > a m b) -> s1 -> (<A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> s1 -> <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 => <A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a' -> ((<A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a' m (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b)) -> <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 => ((<A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a' m (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b)) -> <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 => <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 => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > b -> <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) => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A > -> <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 => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger" >Integer</A > -> [a] -> <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)) => <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b -> <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 => (<A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a -> <A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b) -> <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 => <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 => <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 => <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 => <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 => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger" >Integer</A > -> <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 => (a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> <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 => (a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> <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 => (a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> <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 => <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 => (b -> a -> b) -> b -> <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 => (b -> a -> b) -> b -> <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 => (b -> a -> m b) -> b -> <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 => (a -> a) -> a -> <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 => (a -> m a) -> a -> <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 => a -> <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 => m a -> <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 => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger" >Integer</A > -> a -> <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 => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger" >Integer</A > -> m a -> <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 => m (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > a) -> <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 => (ao -> ai) -> <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 => (ao -> m ai) -> <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 => (ao -> [ai]) -> <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 => (ao -> m [ai]) -> <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 => (a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> <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 => (a -> m <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> <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 => (b -> a -> b) -> b -> <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 => (b -> a -> b) -> b -> <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 => (b -> a -> m b) -> b -> <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 => <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 => <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 => <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 => <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) => <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 => <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 => <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 -> <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) => <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 -> <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 -> 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 -> <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, “outer a” (<TT >aOut</TT >) and “inner a” (<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 => <A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <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 => (<A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> <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 => b -> <A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a -> <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 “inject” 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 >(>>==)</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad" >Monad</A > m => <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b -> (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a' m b') -> <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 '(>>=)' 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 >(==<<)</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad" >Monad</A > m => (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a' m b') -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b -> <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 >'(==<<)' = flip '(>>==)'</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 => (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a' m b') -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b -> <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 >'($$)' = '(==<<)'</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 >(>==>)</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad" >Monad</A > m => <A HREF="Data-Enumerator.html#t%3AEnumerator" >Enumerator</A > a m b -> (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a' m b') -> <A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <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 >'(>==>)' e1 e2 s = e1 s <TT ><A HREF="Data-Enumerator.html#v%3A%3E%3E%3D%3D" >>>==</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 >(<==<)</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad" >Monad</A > m => (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a' m b') -> <A HREF="Data-Enumerator.html#t%3AEnumerator" >Enumerator</A > a m b -> <A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b -> <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 >'(<==<)' = flip '(>==>)'</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 => <A HREF="Data-Enumerator.html#t%3AEnumeratee" >Enumeratee</A > ao ai m b -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > ai m b -> <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 >“Wraps” an iteratee <EM >inner</EM > in an enumeratee <EM >wrapper</EM >. The resulting iteratee will consume <EM >wrapper</EM >’s input type and yield <EM >inner</EM >’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 => 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 => <A HREF="Data-Enumerator.html#t%3AEnumerator" >Enumerator</A > ao m (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > ai m b) -> <A HREF="Data-Enumerator.html#t%3AEnumeratee" >Enumeratee</A > ao ai m b -> <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 >“Wraps” an enumerator <EM >inner</EM > in an enumeratee <EM >wrapper</EM >. The resulting enumerator will generate <EM >wrapper</EM >’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 -> 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 => <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b -> 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 => <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b -> 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) => e -> <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 => <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b -> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3ASomeException" >SomeException</A > -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> <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 => [<A HREF="Data-Enumerator.html#t%3AEnumerator" >Enumerator</A > a m b] -> <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 >'(>>==)'</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 => <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a' m b) -> <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 “flatten” <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 => <A HREF="Data-Enumerator.html#t%3AEnumerator" >Enumerator</A > ao m (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > ai m b) -> <A HREF="Data-Enumerator.html#t%3AEnumeratee" >Enumeratee</A > ao ai m b -> <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 => <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > ao m ai -> <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 => <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 => (<A HREF="Data-Enumerator.html#t%3AEnumerator" >Enumerator</A > a m b -> (<A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> <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 => a -> Enumerator a m b repeat x = loop where loop (Continue k) = k (Chunks [x]) >>== loop loop step = returnI step </PRE ><P >And rewrite it without the boilerplate: </P ><PRE > repeat :: Monad m => a -> Enumerator a m b repeat x = checkContinue0 $ \loop k -> k (Chunks [x] >>== 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 => ((s1 -> <A HREF="Data-Enumerator.html#t%3AEnumerator" >Enumerator</A > a m b) -> s1 -> (<A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> s1 -> <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 => (a -> a) -> a -> Enumerator a m b iterate f = checkContinue1 $ \loop a k -> k (Chunks [a]) >>== 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 => <A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a' -> ((<A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a' m (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b)) -> <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 => ((<A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b) -> <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a' m (<A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b)) -> <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 => <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 => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > b -> <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" >=> <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" >-> <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 => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger" >Integer</A > -> [a] -> <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)) => <A HREF="Data-Enumerator.html#t%3AIteratee" >Iteratee</A > a m b -> <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 >’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 => (<A HREF="Data-Enumerator.html#t%3AStream" >Stream</A > a -> <A HREF="Data-Enumerator.html#t%3AStep" >Step</A > a m b) -> <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 => <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 => <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 => <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 => <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 => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger" >Integer</A > -> <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 => (a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> <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 => (a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> <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 => (a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> <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 => <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 => (b -> a -> b) -> b -> <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 => (b -> a -> b) -> b -> <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 => (b -> a -> m b) -> b -> <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 => (a -> a) -> a -> <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 => (a -> m a) -> a -> <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 => a -> <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 => m a -> <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 => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger" >Integer</A > -> a -> <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 => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger" >Integer</A > -> m a -> <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 => m (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > a) -> <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 => (ao -> ai) -> <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 => (ao -> m ai) -> <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 => (ao -> [ai]) -> <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 => (ao -> m [ai]) -> <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 => (a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> <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 => (a -> m <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> <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 => (b -> a -> b) -> b -> <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 => (b -> a -> b) -> b -> <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 => (b -> a -> m b) -> b -> <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 >