<!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 => t m -> m</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfoldMap" >foldMap</A > :: <A HREF="Data-Monoid.html#t%3AMonoid" >Monoid</A > m => (a -> m) -> t a -> m</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afoldr" >foldr</A > :: (a -> b -> b) -> b -> t a -> b</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afoldl" >foldl</A > :: (a -> b -> a) -> a -> t b -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afoldr1" >foldr1</A > :: (a -> a -> a) -> t a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afoldl1" >foldl1</A > :: (a -> a -> a) -> t a -> 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 => (a -> b -> b) -> b -> t a -> 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 => (a -> b -> a) -> a -> t b -> 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) => (a -> b -> m b) -> b -> t a -> 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) => (a -> b -> m a) -> a -> t b -> 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) => (a -> f b) -> t a -> 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) => t a -> (a -> f b) -> 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) => t (f a) -> 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) => t (f a) -> 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) => (a -> m b) -> t a -> 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) => t a -> (a -> m b) -> 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) => t (m a) -> 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) => t (m a) -> 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 => t a -> [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 => t [a] -> [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 => (a -> [b]) -> t a -> [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 => t <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <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 => t <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <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 => (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> t a -> <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 => (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> t a -> <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) => t a -> 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) => t a -> 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) => t a -> 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 => (a -> a -> <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A >) -> t a -> 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) => t a -> 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 => (a -> a -> <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A >) -> t a -> 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) => a -> t a -> <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) => a -> t a -> <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 => (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> t a -> <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 => t m -> 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 => (a -> m) -> t a -> 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 -> b -> b) -> b -> t a -> 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 -> b -> a) -> a -> t b -> 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 -> a -> a) -> t a -> 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 -> a -> a) -> t a -> 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 => <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 => (a -> b -> b) -> b -> t a -> 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 => (a -> b -> a) -> a -> t b -> 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) => (a -> b -> m b) -> b -> t a -> 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) => (a -> b -> m a) -> a -> t b -> 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) => (a -> f b) -> t a -> 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) => t a -> (a -> f b) -> 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) => t (f a) -> 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) => t (f a) -> 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) => (a -> m b) -> t a -> 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) => t a -> (a -> m b) -> 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) => t (m a) -> 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) => t (m a) -> 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 => t a -> [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 => t [a] -> [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 => (a -> [b]) -> t a -> [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 => t <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <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 => t <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <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 => (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> t a -> <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 => (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> t a -> <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) => t a -> 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) => t a -> 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) => t a -> 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 => (a -> a -> <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A >) -> t a -> 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) => t a -> 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 => (a -> a -> <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A >) -> t a -> 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) => a -> t a -> <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) => a -> t a -> <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 => (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> t a -> <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 >