|  | 
| | Data.Foldable | | Portability | portable |  | Stability | experimental |  | Maintainer | libraries@haskell.org | 
 | 
 | 
|  | 
|  | 
|  | 
| Description | 
| Class of data structures that can be folded to a summary value.
 Many of these functions generalize Prelude, Control.Monad and
 Data.List functions of the same names from lists to any Foldable
 functor.  To avoid ambiguity, either import those modules hiding
 these names or qualify uses of these function names with an alias
 for this module.
 | 
|  | 
| Synopsis | 
|  | 
| | class  Foldable t  where |  |  |  |  |  | foldr' :: Foldable t => (a -> b -> b) -> b -> t a -> b |  |  |  | foldl' :: Foldable t => (a -> b -> a) -> a -> t b -> a |  |  |  | foldrM :: (Foldable t, Monad m) => (a -> b -> m b) -> b -> t a -> m b |  |  |  | foldlM :: (Foldable t, Monad m) => (a -> b -> m a) -> a -> t b -> m a |  |  |  | traverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f () |  |  |  | for_ :: (Foldable t, Applicative f) => t a -> (a -> f b) -> f () |  |  |  | sequenceA_ :: (Foldable t, Applicative f) => t (f a) -> f () |  |  |  | asum :: (Foldable t, Alternative f) => t (f a) -> f a |  |  |  | mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m () |  |  |  | forM_ :: (Foldable t, Monad m) => t a -> (a -> m b) -> m () |  |  |  | sequence_ :: (Foldable t, Monad m) => t (m a) -> m () |  |  |  | msum :: (Foldable t, MonadPlus m) => t (m a) -> m a |  |  |  | toList :: Foldable t => t a -> [a] |  |  |  | concat :: Foldable t => t [a] -> [a] |  |  |  | concatMap :: Foldable t => (a -> [b]) -> t a -> [b] |  |  |  | and :: Foldable t => t Bool -> Bool |  |  |  | or :: Foldable t => t Bool -> Bool |  |  |  | any :: Foldable t => (a -> Bool) -> t a -> Bool |  |  |  | all :: Foldable t => (a -> Bool) -> t a -> Bool |  |  |  | sum :: (Foldable t, Num a) => t a -> a |  |  |  | product :: (Foldable t, Num a) => t a -> a |  |  |  | maximum :: (Foldable t, Ord a) => t a -> a |  |  |  | maximumBy :: Foldable t => (a -> a -> Ordering) -> t a -> a |  |  |  | minimum :: (Foldable t, Ord a) => t a -> a |  |  |  | minimumBy :: Foldable t => (a -> a -> Ordering) -> t a -> a |  |  |  | elem :: (Foldable t, Eq a) => a -> t a -> Bool |  |  |  | notElem :: (Foldable t, Eq a) => a -> t a -> Bool |  |  |  | find :: Foldable t => (a -> Bool) -> t a -> Maybe a | 
 | 
|  | 
|  | 
| Folds | 
|  | 
|  | 
| | Data structures that can be folded.
 Minimal complete definition: foldMap or foldr.
 For example, given a data type
  data Tree a = Empty | Leaf a | Node (Tree a) a (Tree a)
 a suitable instance would be
  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
This is suitable even for abstract types, as the monoid is assumed
 to satisfy the monoid laws.
 |  |  |  | Methods |  | |  |  | Combine the elements of a structure using a monoid. |  |  |  |  |  | Map each element of the structure to a monoid,
 and combine the results. |  |  |  | | foldr ::  (a -> b -> b) -> b -> t a -> b | Source | 
 |  | Right-associative fold of a structure.
 foldr f z = foldr f z . toList |  |  |  | | foldl ::  (a -> b -> a) -> a -> t b -> a | Source | 
 |  | Left-associative fold of a structure.
 foldl f z = foldl f z . toList |  |  |  | | foldr1 ::  (a -> a -> a) -> t a -> a | Source | 
 |  | A variant of foldr that has no base case,
 and thus may only be applied to non-empty structures.
 foldr1 f = foldr1 f . toList |  |  |  | | foldl1 ::  (a -> a -> a) -> t a -> a | Source | 
 |  | A variant of foldl that has no base case,
 and thus may only be applied to non-empty structures.
 foldl1 f = foldl1 f . toList | 
 |  |  |  |  Instances |  |  | 
 | 
|  | 
| Special biased folds | 
|  | 
|  | 
| Fold over the elements of a structure,
 associating to the right, but strictly. | 
|  | 
|  | 
| Fold over the elements of a structure,
 associating to the left, but strictly. | 
|  | 
|  | 
| Monadic fold over the elements of a structure,
 associating to the right, i.e. from right to left. | 
|  | 
|  | 
| Monadic fold over the elements of a structure,
 associating to the left, i.e. from left to right. | 
|  | 
| Folding actions | 
|  | 
| Applicative actions | 
|  | 
|  | 
| Map each element of a structure to an action, evaluate
 these actions from left to right, and ignore the results. | 
|  | 
|  | 
| for_ is traverse_ with its arguments flipped. | 
|  | 
|  | 
| Evaluate each action in the structure from left to right,
 and ignore the results. | 
|  | 
|  | 
| The sum of a collection of actions, generalizing concat. | 
|  | 
| Monadic actions | 
|  | 
|  | 
| Map each element of a structure to a monadic action, evaluate
 these actions from left to right, and ignore the results. | 
|  | 
|  | 
| forM_ is mapM_ with its arguments flipped. | 
|  | 
|  | 
| Evaluate each monadic action in the structure from left to right,
 and ignore the results. | 
|  | 
|  | 
| The sum of a collection of actions, generalizing concat. | 
|  | 
| Specialized folds | 
|  | 
|  | 
| List of elements of a structure. | 
|  | 
|  | 
| The concatenation of all the elements of a container of lists. | 
|  | 
|  | 
| Map a function over all the elements of a container and concatenate
 the resulting lists. | 
|  | 
|  | 
| and returns the conjunction of a container of Bools.  For the
 result to be True, the container must be finite; False, however,
 results from a False value finitely far from the left end. | 
|  | 
|  | 
| or returns the disjunction of a container of Bools.  For the
 result to be False, the container must be finite; True, however,
 results from a True value finitely far from the left end. | 
|  | 
|  | 
| Determines whether any element of the structure satisfies the predicate. | 
|  | 
|  | 
| Determines whether all elements of the structure satisfy the predicate. | 
|  | 
|  | 
| The sum function computes the sum of the numbers of a structure. | 
|  | 
|  | 
| The product function computes the product of the numbers of a structure. | 
|  | 
|  | 
| The largest element of a non-empty structure. | 
|  | 
|  | 
| The largest element of a non-empty structure with respect to the
 given comparison function. | 
|  | 
|  | 
| The least element of a non-empty structure. | 
|  | 
|  | 
| The least element of a non-empty structure with respect to the
 given comparison function. | 
|  | 
| Searches | 
|  | 
|  | 
| Does the element occur in the structure? | 
|  | 
|  | 
| notElem is the negation of elem. | 
|  | 
|  | 
| The find function takes a predicate and a structure and returns
 the leftmost element of the structure matching the predicate, or
 Nothing if there is no such element. | 
|  | 
| Produced by Haddock version 2.6.1 |