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 |
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.
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 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 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 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 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 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 # | |
FoldableLL (FMList a) a Source # | |
Defined in Data.ListLike.FMList | |
FoldableLL (UTF8 ByteString) Char Source # | |
Defined in Data.ListLike.UTF8 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 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.