| Copyright | Copyright (C) 2007 John Goerzen | 
|---|---|
| License | BSD3 | 
| Maintainer | David Fox <dsf@seereason.com>, Andreas Abel | 
| Stability | stable | 
| Portability | portable | 
| Safe Haskell | Safe-Inferred | 
| Language | Haskell2010 | 
Data.ListLike.FoldableLL
Contents
Description
Generic tools for data structures that can be folded.
Written by John Goerzen, jgoerzen@complete.org
Synopsis
- class FoldableLL full item | full -> item where
- fold :: (FoldableLL full item, Monoid item) => full -> item
- foldMap :: (FoldableLL full item, Monoid m) => (item -> m) -> full -> m
- foldM :: (Monad m, FoldableLL full item) => (a -> item -> m a) -> a -> full -> m a
- sequence_ :: (Monad m, FoldableLL full (m item)) => full -> m ()
- mapM_ :: (Monad m, FoldableLL full item) => (item -> m b) -> full -> m ()
FoldableLL Class
class FoldableLL full item | full -> item where Source #
This is the primary class for structures that are to be considered
foldable.  A minimum complete definition provides foldl and foldr.
Instances of FoldableLL can be folded, and can be many and varied.
These functions are used heavily in Data.ListLike.
Methods
foldl :: (a -> item -> a) -> a -> full -> a Source #
Left-associative fold
foldl' :: (a -> item -> a) -> a -> full -> a Source #
Strict version of foldl. 
foldl1 :: (item -> item -> item) -> full -> item Source #
A variant of foldl with no base case.  Requires at least 1
 list element.
foldr :: (item -> b -> b) -> b -> full -> b Source #
Right-associative fold
foldr' :: (item -> b -> b) -> b -> full -> b Source #
Strict version of foldr
foldr1 :: (item -> item -> item) -> full -> item Source #
Like foldr, but with no starting value
Instances
| FoldableLL CharString Char Source # | |
| Defined in Data.ListLike.CharString Methods foldl :: (a -> Char -> a) -> a -> CharString -> a Source # foldl' :: (a -> Char -> a) -> a -> CharString -> a Source # foldl1 :: (Char -> Char -> Char) -> CharString -> Char Source # foldr :: (Char -> b -> b) -> b -> CharString -> b Source # foldr' :: (Char -> b -> b) -> b -> CharString -> b Source # foldr1 :: (Char -> Char -> Char) -> CharString -> Char Source # | |
| FoldableLL CharStringLazy Char Source # | |
| Defined in Data.ListLike.CharString Methods foldl :: (a -> Char -> a) -> a -> CharStringLazy -> a Source # foldl' :: (a -> Char -> a) -> a -> CharStringLazy -> a Source # foldl1 :: (Char -> Char -> Char) -> CharStringLazy -> Char Source # foldr :: (Char -> b -> b) -> b -> CharStringLazy -> b Source # foldr' :: (Char -> b -> b) -> b -> CharStringLazy -> b Source # foldr1 :: (Char -> Char -> Char) -> CharStringLazy -> Char Source # | |
| FoldableLL Chars Char Source # | |
| Defined in Data.ListLike.Chars | |
| FoldableLL ByteString Word8 Source # | |
| Defined in Data.ListLike.Instances Methods foldl :: (a -> Word8 -> a) -> a -> ByteString -> a Source # foldl' :: (a -> Word8 -> a) -> a -> ByteString -> a Source # foldl1 :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8 Source # foldr :: (Word8 -> b -> b) -> b -> ByteString -> b Source # foldr' :: (Word8 -> b -> b) -> b -> ByteString -> b Source # foldr1 :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8 Source # | |
| FoldableLL ByteString Word8 Source # | |
| Defined in Data.ListLike.Instances Methods foldl :: (a -> Word8 -> a) -> a -> ByteString -> a Source # foldl' :: (a -> Word8 -> a) -> a -> ByteString -> a Source # foldl1 :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8 Source # foldr :: (Word8 -> b -> b) -> b -> ByteString -> b Source # foldr' :: (Word8 -> b -> b) -> b -> ByteString -> b Source # foldr1 :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8 Source # | |
| FoldableLL Text Char Source # | |
| Defined in Data.ListLike.Text.Text | |
| FoldableLL Builder Char Source # | |
| Defined in Data.ListLike.Text.Builder Methods foldl :: (a -> Char -> a) -> a -> Builder -> a Source # foldl' :: (a -> Char -> a) -> a -> Builder -> a Source # foldl1 :: (Char -> Char -> Char) -> Builder -> Char Source # foldr :: (Char -> b -> b) -> b -> Builder -> b Source # foldr' :: (Char -> b -> b) -> b -> Builder -> b Source # foldr1 :: (Char -> Char -> Char) -> Builder -> Char Source # | |
| FoldableLL Text Char Source # | |
| Defined in Data.ListLike.Text.TextLazy | |
| FoldableLL (Seq a) a Source # | |
| FoldableLL (DList a) a Source # | |
| Defined in Data.ListLike.DList | |
| FoldableLL (FMList a) a Source # | |
| Defined in Data.ListLike.FMList | |
| FoldableLL (UTF8 ByteString) Char Source # | |
| Defined in Data.ListLike.UTF8 Methods foldl :: (a -> Char -> a) -> a -> UTF8 ByteString -> a Source # foldl' :: (a -> Char -> a) -> a -> UTF8 ByteString -> a Source # foldl1 :: (Char -> Char -> Char) -> UTF8 ByteString -> Char Source # foldr :: (Char -> b -> b) -> b -> UTF8 ByteString -> b Source # foldr' :: (Char -> b -> b) -> b -> UTF8 ByteString -> b Source # foldr1 :: (Char -> Char -> Char) -> UTF8 ByteString -> Char Source # | |
| FoldableLL (UTF8 ByteString) Char Source # | |
| Defined in Data.ListLike.UTF8 Methods foldl :: (a -> Char -> a) -> a -> UTF8 ByteString -> a Source # foldl' :: (a -> Char -> a) -> a -> UTF8 ByteString -> a Source # foldl1 :: (Char -> Char -> Char) -> UTF8 ByteString -> Char Source # foldr :: (Char -> b -> b) -> b -> UTF8 ByteString -> b Source # foldr' :: (Char -> b -> b) -> b -> UTF8 ByteString -> b Source # foldr1 :: (Char -> Char -> Char) -> UTF8 ByteString -> Char Source # | |
| FoldableLL (Vector a) a Source # | |
| Defined in Data.ListLike.Vector.Vector | |
| Storable a => FoldableLL (Vector a) a Source # | |
| Defined in Data.ListLike.Vector.Storable | |
| Unbox a => FoldableLL (Vector a) a Source # | |
| Defined in Data.ListLike.Vector.Unboxed | |
| FoldableLL [a] a Source # | |
| Defined in Data.ListLike.FoldableLL | |
| Vector v a => FoldableLL (v a) a Source # | |
| Defined in Data.ListLike.Vector.Generic | |
| Ix i => FoldableLL (Array i e) e Source # | |
| Defined in Data.ListLike.Instances | |
Utilities
fold :: (FoldableLL full item, Monoid item) => full -> item Source #
foldMap :: (FoldableLL full item, Monoid m) => (item -> m) -> full -> m Source #
Map each element to a monoid, then combine the results
foldM :: (Monad m, FoldableLL full item) => (a -> item -> m a) -> a -> full -> m a Source #
Monadic version of left fold, similar to foldM. 
sequence_ :: (Monad m, FoldableLL full (m item)) => full -> m () Source #
mapM_ :: (Monad m, FoldableLL full item) => (item -> m b) -> full -> m () Source #
A map in monad space, discarding results.