Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 1f2b142b9d2ef4849a6f5316fa1c5b12 > files > 1366

ghc-6.10.4-1mdv2010.0.i586.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.Foldable</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-Foldable.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"
>base-4.1.0.0: Basic libraries</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.Foldable</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"
>Stability</TD
><TD CLASS="infoval"
>experimental</TD
></TR
><TR
><TD CLASS="infohead"
>Maintainer</TD
><TD CLASS="infoval"
>libraries@haskell.org</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"
>Folds
</A
></DT
><DD
><DL
><DT
><A HREF="#2"
>Special biased folds
</A
></DT
><DT
><A HREF="#3"
>Folding actions
</A
></DT
><DD
><DL
><DT
><A HREF="#4"
>Applicative actions
</A
></DT
><DT
><A HREF="#5"
>Monadic actions
</A
></DT
></DL
></DD
><DT
><A HREF="#6"
>Specialized folds
</A
></DT
><DT
><A HREF="#7"
>Searches
</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
>Class of data structures that can be folded to a summary value.
</P
><P
>Many of these functions generalize <A HREF="Prelude.html"
>Prelude</A
>, <A HREF="Control-Monad.html"
>Control.Monad</A
> and
 <A HREF="Data-List.html"
>Data.List</A
> functions of the same names from lists to any <TT
><A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
></TT
>
 functor.  To avoid ambiguity, either import those modules hiding
 these names or qualify uses of these function names with an alias
 for this module.
</P
></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"
><SPAN CLASS="keyword"
>class</SPAN
>  <A HREF="#t%3AFoldable"
>Foldable</A
> t  <SPAN CLASS="keyword"
>where</SPAN
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="#v%3Afold"
>fold</A
> :: <A HREF="Data-Monoid.html#t%3AMonoid"
>Monoid</A
> m =&gt; t m -&gt; m</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AfoldMap"
>foldMap</A
> :: <A HREF="Data-Monoid.html#t%3AMonoid"
>Monoid</A
> m =&gt; (a -&gt; m) -&gt; t a -&gt; m</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Afoldr"
>foldr</A
> ::  (a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Afoldl"
>foldl</A
> ::  (a -&gt; b -&gt; a) -&gt; a -&gt; t b -&gt; a</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Afoldr1"
>foldr1</A
> ::  (a -&gt; a -&gt; a) -&gt; t a -&gt; a</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Afoldl1"
>foldl1</A
> ::  (a -&gt; a -&gt; a) -&gt; t a -&gt; a</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Afoldr%27"
>foldr'</A
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Afoldl%27"
>foldl'</A
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; b -&gt; a) -&gt; a -&gt; t b -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AfoldrM"
>foldrM</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Monad.html#t%3AMonad"
>Monad</A
> m) =&gt; (a -&gt; b -&gt; m b) -&gt; b -&gt; t a -&gt; m b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AfoldlM"
>foldlM</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Monad.html#t%3AMonad"
>Monad</A
> m) =&gt; (a -&gt; b -&gt; m a) -&gt; a -&gt; t b -&gt; m a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Atraverse_"
>traverse_</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Applicative.html#t%3AApplicative"
>Applicative</A
> f) =&gt; (a -&gt; f b) -&gt; t a -&gt; f <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Afor_"
>for_</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Applicative.html#t%3AApplicative"
>Applicative</A
> f) =&gt; t a -&gt; (a -&gt; f b) -&gt; f <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsequenceA_"
>sequenceA_</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Applicative.html#t%3AApplicative"
>Applicative</A
> f) =&gt; t (f a) -&gt; f <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aasum"
>asum</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Applicative.html#t%3AAlternative"
>Alternative</A
> f) =&gt; t (f a) -&gt; f a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmapM_"
>mapM_</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Monad.html#t%3AMonad"
>Monad</A
> m) =&gt; (a -&gt; m b) -&gt; t a -&gt; m <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AforM_"
>forM_</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Monad.html#t%3AMonad"
>Monad</A
> m) =&gt; t a -&gt; (a -&gt; m b) -&gt; m <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Asequence_"
>sequence_</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Monad.html#t%3AMonad"
>Monad</A
> m) =&gt; t (m a) -&gt; m <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Amsum"
>msum</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m) =&gt; t (m a) -&gt; m a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AtoList"
>toList</A
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; t a -&gt; [a]</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aconcat"
>concat</A
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; t [a] -&gt; [a]</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AconcatMap"
>concatMap</A
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; [b]) -&gt; t a -&gt; [b]</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aand"
>and</A
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; t <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aor"
>or</A
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; t <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aany"
>any</A
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
>) -&gt; t a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aall"
>all</A
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
>) -&gt; t a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Asum"
>sum</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Prelude.html#t%3ANum"
>Num</A
> a) =&gt; t a -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aproduct"
>product</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Prelude.html#t%3ANum"
>Num</A
> a) =&gt; t a -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Amaximum"
>maximum</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Data-Ord.html#t%3AOrd"
>Ord</A
> a) =&gt; t a -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmaximumBy"
>maximumBy</A
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; a -&gt; <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering"
>Ordering</A
>) -&gt; t a -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aminimum"
>minimum</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Data-Ord.html#t%3AOrd"
>Ord</A
> a) =&gt; t a -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AminimumBy"
>minimumBy</A
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; a -&gt; <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering"
>Ordering</A
>) -&gt; t a -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aelem"
>elem</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Data-Eq.html#t%3AEq"
>Eq</A
> a) =&gt; a -&gt; t a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AnotElem"
>notElem</A
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Data-Eq.html#t%3AEq"
>Eq</A
> a) =&gt; a -&gt; t a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Afind"
>find</A
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
>) -&gt; t a -&gt; <A HREF="Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a</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"
>Folds
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>class</SPAN
>  <A NAME="t:Foldable"
><A NAME="t%3AFoldable"
></A
></A
><B
>Foldable</B
> t  <SPAN CLASS="keyword"
>where</SPAN
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
><P
>Data structures that can be folded.
</P
><P
>Minimal complete definition: <TT
><A HREF="Data-Foldable.html#v%3AfoldMap"
>foldMap</A
></TT
> or <TT
><A HREF="Data-Foldable.html#v%3Afoldr"
>foldr</A
></TT
>.
</P
><P
>For example, given a data type
</P
><PRE
> data Tree a = Empty | Leaf a | Node (Tree a) a (Tree a)
</PRE
><P
>a suitable instance would be
</P
><PRE
> instance Foldable Tree
    foldMap f Empty = mempty
    foldMap f (Leaf x) = f x
    foldMap f (Node l k r) = foldMap f l `mappend` f k `mappend` foldMap f r
</PRE
><P
>This is suitable even for abstract types, as the monoid is assumed
 to satisfy the monoid laws.
</P
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="section4"
>Methods</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A NAME="v:fold"
><A NAME="v%3Afold"
></A
></A
><B
>fold</B
> :: <A HREF="Data-Monoid.html#t%3AMonoid"
>Monoid</A
> m =&gt; t m -&gt; m</TD
></TR
><TR
><TD CLASS="doc"
>Combine the elements of a structure using a monoid.
</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:foldMap"
><A NAME="v%3AfoldMap"
></A
></A
><B
>foldMap</B
> :: <A HREF="Data-Monoid.html#t%3AMonoid"
>Monoid</A
> m =&gt; (a -&gt; m) -&gt; t a -&gt; m</TD
></TR
><TR
><TD CLASS="doc"
>Map each element of the structure to a monoid,
 and combine the results.
</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:foldr"
><A NAME="v%3Afoldr"
></A
></A
><B
>foldr</B
> ::  (a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b</TD
></TR
><TR
><TD CLASS="doc"
><P
>Right-associative fold of a structure.
</P
><PRE
><TT
><A HREF="Data-Foldable.html#v%3Afoldr"
>foldr</A
></TT
> f z = <TT
><A HREF="Data-List.html#v%3Afoldr"
>foldr</A
></TT
> f z . <TT
><A HREF="Data-Foldable.html#v%3AtoList"
>toList</A
></TT
></PRE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:foldl"
><A NAME="v%3Afoldl"
></A
></A
><B
>foldl</B
> ::  (a -&gt; b -&gt; a) -&gt; a -&gt; t b -&gt; a</TD
></TR
><TR
><TD CLASS="doc"
><P
>Left-associative fold of a structure.
</P
><PRE
><TT
><A HREF="Data-Foldable.html#v%3Afoldl"
>foldl</A
></TT
> f z = <TT
><A HREF="Data-List.html#v%3Afoldl"
>foldl</A
></TT
> f z . <TT
><A HREF="Data-Foldable.html#v%3AtoList"
>toList</A
></TT
></PRE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:foldr1"
><A NAME="v%3Afoldr1"
></A
></A
><B
>foldr1</B
> ::  (a -&gt; a -&gt; a) -&gt; t a -&gt; a</TD
></TR
><TR
><TD CLASS="doc"
><P
>A variant of <TT
><A HREF="Data-Foldable.html#v%3Afoldr"
>foldr</A
></TT
> that has no base case,
 and thus may only be applied to non-empty structures.
</P
><PRE
><TT
><A HREF="Data-Foldable.html#v%3Afoldr1"
>foldr1</A
></TT
> f = <TT
><A HREF="Data-List.html#v%3Afoldr1"
>foldr1</A
></TT
> f . <TT
><A HREF="Data-Foldable.html#v%3AtoList"
>toList</A
></TT
></PRE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:foldl1"
><A NAME="v%3Afoldl1"
></A
></A
><B
>foldl1</B
> ::  (a -&gt; a -&gt; a) -&gt; t a -&gt; a</TD
></TR
><TR
><TD CLASS="doc"
><P
>A variant of <TT
><A HREF="Data-Foldable.html#v%3Afoldl"
>foldl</A
></TT
> that has no base case,
 and thus may only be applied to non-empty structures.
</P
><PRE
><TT
><A HREF="Data-Foldable.html#v%3Afoldl1"
>foldl1</A
></TT
> f = <TT
><A HREF="Data-List.html#v%3Afoldl1"
>foldl1</A
></TT
> f . <TT
><A HREF="Data-Foldable.html#v%3AtoList"
>toList</A
></TT
></PRE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Foldable')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:Foldable" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> []</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> <A HREF="Data-Maybe.html#t%3AMaybe"
>Maybe</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="GHC-Arr.html#t%3AIx"
>Ix</A
> i =&gt; <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> (<A HREF="GHC-Arr.html#t%3AArray"
>Array</A
> i)</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="2"
><A NAME="2"
>Special biased folds
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:foldr'"
><A NAME="v%3Afoldr%27"
></A
></A
><B
>foldr'</B
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b</TD
></TR
><TR
><TD CLASS="doc"
>Fold over the elements of a structure,
 associating to the right, but strictly.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:foldl'"
><A NAME="v%3Afoldl%27"
></A
></A
><B
>foldl'</B
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; b -&gt; a) -&gt; a -&gt; t b -&gt; a</TD
></TR
><TR
><TD CLASS="doc"
>Fold over the elements of a structure,
 associating to the left, but strictly.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:foldrM"
><A NAME="v%3AfoldrM"
></A
></A
><B
>foldrM</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Monad.html#t%3AMonad"
>Monad</A
> m) =&gt; (a -&gt; b -&gt; m b) -&gt; b -&gt; t a -&gt; m b</TD
></TR
><TR
><TD CLASS="doc"
>Monadic fold over the elements of a structure,
 associating to the right, i.e. from right to left.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:foldlM"
><A NAME="v%3AfoldlM"
></A
></A
><B
>foldlM</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Monad.html#t%3AMonad"
>Monad</A
> m) =&gt; (a -&gt; b -&gt; m a) -&gt; a -&gt; t b -&gt; m a</TD
></TR
><TR
><TD CLASS="doc"
>Monadic fold over the elements of a structure,
 associating to the left, i.e. from left to right.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="3"
><A NAME="3"
>Folding actions
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section3"
><A NAME="4"
><A NAME="4"
>Applicative actions
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:traverse_"
><A NAME="v%3Atraverse_"
></A
></A
><B
>traverse_</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Applicative.html#t%3AApplicative"
>Applicative</A
> f) =&gt; (a -&gt; f b) -&gt; t a -&gt; f <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="doc"
>Map each element of a structure to an action, evaluate
 these actions from left to right, and ignore the results.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:for_"
><A NAME="v%3Afor_"
></A
></A
><B
>for_</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Applicative.html#t%3AApplicative"
>Applicative</A
> f) =&gt; t a -&gt; (a -&gt; f b) -&gt; f <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="doc"
><TT
><A HREF="Data-Foldable.html#v%3Afor_"
>for_</A
></TT
> is <TT
><A HREF="Data-Foldable.html#v%3Atraverse_"
>traverse_</A
></TT
> with its arguments flipped.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sequenceA_"
><A NAME="v%3AsequenceA_"
></A
></A
><B
>sequenceA_</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Applicative.html#t%3AApplicative"
>Applicative</A
> f) =&gt; t (f a) -&gt; f <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="doc"
>Evaluate each action in the structure from left to right,
 and ignore the results.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:asum"
><A NAME="v%3Aasum"
></A
></A
><B
>asum</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Applicative.html#t%3AAlternative"
>Alternative</A
> f) =&gt; t (f a) -&gt; f a</TD
></TR
><TR
><TD CLASS="doc"
>The sum of a collection of actions, generalizing <TT
><A HREF="Data-Foldable.html#v%3Aconcat"
>concat</A
></TT
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section3"
><A NAME="5"
><A NAME="5"
>Monadic actions
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mapM_"
><A NAME="v%3AmapM_"
></A
></A
><B
>mapM_</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Monad.html#t%3AMonad"
>Monad</A
> m) =&gt; (a -&gt; m b) -&gt; t a -&gt; m <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="doc"
>Map each element of a structure to a monadic action, evaluate
 these actions from left to right, and ignore the results.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:forM_"
><A NAME="v%3AforM_"
></A
></A
><B
>forM_</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Monad.html#t%3AMonad"
>Monad</A
> m) =&gt; t a -&gt; (a -&gt; m b) -&gt; m <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="doc"
><TT
><A HREF="Data-Foldable.html#v%3AforM_"
>forM_</A
></TT
> is <TT
><A HREF="Data-Foldable.html#v%3AmapM_"
>mapM_</A
></TT
> with its arguments flipped.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sequence_"
><A NAME="v%3Asequence_"
></A
></A
><B
>sequence_</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Monad.html#t%3AMonad"
>Monad</A
> m) =&gt; t (m a) -&gt; m <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="doc"
>Evaluate each monadic action in the structure from left to right,
 and ignore the results.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:msum"
><A NAME="v%3Amsum"
></A
></A
><B
>msum</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m) =&gt; t (m a) -&gt; m a</TD
></TR
><TR
><TD CLASS="doc"
>The sum of a collection of actions, generalizing <TT
><A HREF="Data-Foldable.html#v%3Aconcat"
>concat</A
></TT
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="6"
><A NAME="6"
>Specialized folds
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:toList"
><A NAME="v%3AtoList"
></A
></A
><B
>toList</B
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; t a -&gt; [a]</TD
></TR
><TR
><TD CLASS="doc"
>List of elements of a structure.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:concat"
><A NAME="v%3Aconcat"
></A
></A
><B
>concat</B
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; t [a] -&gt; [a]</TD
></TR
><TR
><TD CLASS="doc"
>The concatenation of all the elements of a container of lists.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:concatMap"
><A NAME="v%3AconcatMap"
></A
></A
><B
>concatMap</B
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; [b]) -&gt; t a -&gt; [b]</TD
></TR
><TR
><TD CLASS="doc"
>Map a function over all the elements of a container and concatenate
 the resulting lists.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:and"
><A NAME="v%3Aand"
></A
></A
><B
>and</B
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; t <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="doc"
><TT
><A HREF="Data-Foldable.html#v%3Aand"
>and</A
></TT
> returns the conjunction of a container of Bools.  For the
 result to be <TT
><A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue"
>True</A
></TT
>, the container must be finite; <TT
><A HREF="../ghc-prim/GHC-Bool.html#v%3AFalse"
>False</A
></TT
>, however,
 results from a <TT
><A HREF="../ghc-prim/GHC-Bool.html#v%3AFalse"
>False</A
></TT
> value finitely far from the left end.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:or"
><A NAME="v%3Aor"
></A
></A
><B
>or</B
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; t <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="doc"
><TT
><A HREF="Data-Foldable.html#v%3Aor"
>or</A
></TT
> returns the disjunction of a container of Bools.  For the
 result to be <TT
><A HREF="../ghc-prim/GHC-Bool.html#v%3AFalse"
>False</A
></TT
>, the container must be finite; <TT
><A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue"
>True</A
></TT
>, however,
 results from a <TT
><A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue"
>True</A
></TT
> value finitely far from the left end.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:any"
><A NAME="v%3Aany"
></A
></A
><B
>any</B
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
>) -&gt; t a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="doc"
>Determines whether any element of the structure satisfies the predicate.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:all"
><A NAME="v%3Aall"
></A
></A
><B
>all</B
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
>) -&gt; t a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="doc"
>Determines whether all elements of the structure satisfy the predicate.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sum"
><A NAME="v%3Asum"
></A
></A
><B
>sum</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Prelude.html#t%3ANum"
>Num</A
> a) =&gt; t a -&gt; a</TD
></TR
><TR
><TD CLASS="doc"
>The <TT
><A HREF="Data-Foldable.html#v%3Asum"
>sum</A
></TT
> function computes the sum of the numbers of a structure.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:product"
><A NAME="v%3Aproduct"
></A
></A
><B
>product</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Prelude.html#t%3ANum"
>Num</A
> a) =&gt; t a -&gt; a</TD
></TR
><TR
><TD CLASS="doc"
>The <TT
><A HREF="Data-Foldable.html#v%3Aproduct"
>product</A
></TT
> function computes the product of the numbers of a structure.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:maximum"
><A NAME="v%3Amaximum"
></A
></A
><B
>maximum</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Data-Ord.html#t%3AOrd"
>Ord</A
> a) =&gt; t a -&gt; a</TD
></TR
><TR
><TD CLASS="doc"
>The largest element of a non-empty structure.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:maximumBy"
><A NAME="v%3AmaximumBy"
></A
></A
><B
>maximumBy</B
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; a -&gt; <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering"
>Ordering</A
>) -&gt; t a -&gt; a</TD
></TR
><TR
><TD CLASS="doc"
>The largest element of a non-empty structure with respect to the
 given comparison function.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:minimum"
><A NAME="v%3Aminimum"
></A
></A
><B
>minimum</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Data-Ord.html#t%3AOrd"
>Ord</A
> a) =&gt; t a -&gt; a</TD
></TR
><TR
><TD CLASS="doc"
>The least element of a non-empty structure.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:minimumBy"
><A NAME="v%3AminimumBy"
></A
></A
><B
>minimumBy</B
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; a -&gt; <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering"
>Ordering</A
>) -&gt; t a -&gt; a</TD
></TR
><TR
><TD CLASS="doc"
>The least element of a non-empty structure with respect to the
 given comparison function.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="7"
><A NAME="7"
>Searches
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:elem"
><A NAME="v%3Aelem"
></A
></A
><B
>elem</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Data-Eq.html#t%3AEq"
>Eq</A
> a) =&gt; a -&gt; t a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="doc"
>Does the element occur in the structure?
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:notElem"
><A NAME="v%3AnotElem"
></A
></A
><B
>notElem</B
> :: (<A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t, <A HREF="Data-Eq.html#t%3AEq"
>Eq</A
> a) =&gt; a -&gt; t a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="doc"
><TT
><A HREF="Data-Foldable.html#v%3AnotElem"
>notElem</A
></TT
> is the negation of <TT
><A HREF="Data-Foldable.html#v%3Aelem"
>elem</A
></TT
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:find"
><A NAME="v%3Afind"
></A
></A
><B
>find</B
> :: <A HREF="Data-Foldable.html#t%3AFoldable"
>Foldable</A
> t =&gt; (a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
>) -&gt; t a -&gt; <A HREF="Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a</TD
></TR
><TR
><TD CLASS="doc"
>The <TT
><A HREF="Data-Foldable.html#v%3Afind"
>find</A
></TT
> function takes a predicate and a structure and returns
 the leftmost element of the structure matching the predicate, or
 <TT
><A HREF="Data-Maybe.html#v%3ANothing"
>Nothing</A
></TT
> if there is no such element.
</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.4.2</TD
></TR
></TABLE
></BODY
></HTML
>