ListLike-4.7.8.4: Generalized support for list-like structures

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

- FoldableLL Class
- Utilities

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
  - foldl :: (a -> item -> a) -> a -> full -> a
  - foldl' :: (a -> item -> a) -> a -> full -> a
  - foldl1 :: (item -> item -> item) -> full -> item
  - foldr :: (item -> b -> b) -> b -> full -> b
  - foldr' :: (item -> b -> b) -> b -> full -> b
  - foldr1 :: (item -> item -> item) -> full -> item
- 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.

Minimal complete definition

foldl, foldr

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

Instances details

FoldableLL CharString Char Source # |

Instance details

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 # |

Instance details

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 # |
Instance details Defined in Data.ListLike.Chars Methods foldl :: (a -> Char -> a) -> a -> Chars -> a Source # foldl' :: (a -> Char -> a) -> a -> Chars -> a Source # foldl1 :: (Char -> Char -> Char) -> Chars -> Char Source # foldr :: (Char -> b -> b) -> b -> Chars -> b Source # foldr' :: (Char -> b -> b) -> b -> Chars -> b Source # foldr1 :: (Char -> Char -> Char) -> Chars -> Char Source #
FoldableLL ByteString Word8 Source # |

Instance details

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 # |

Instance details

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 # |
Instance details Defined in Data.ListLike.Text.Text Methods foldl :: (a -> Char -> a) -> a -> Text -> a Source # foldl' :: (a -> Char -> a) -> a -> Text -> a Source # foldl1 :: (Char -> Char -> Char) -> Text -> Char Source # foldr :: (Char -> b -> b) -> b -> Text -> b Source # foldr' :: (Char -> b -> b) -> b -> Text -> b Source # foldr1 :: (Char -> Char -> Char) -> Text -> Char Source #
FoldableLL Builder Char Source # |

Instance details

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 # |
Instance details Defined in Data.ListLike.Text.TextLazy Methods foldl :: (a -> Char -> a) -> a -> Text -> a Source # foldl' :: (a -> Char -> a) -> a -> Text -> a Source # foldl1 :: (Char -> Char -> Char) -> Text -> Char Source # foldr :: (Char -> b -> b) -> b -> Text -> b Source # foldr' :: (Char -> b -> b) -> b -> Text -> b Source # foldr1 :: (Char -> Char -> Char) -> Text -> Char Source #
FoldableLL (Seq a) a Source # |
Instance details Defined in Data.ListLike.Instances Methods foldl :: (a0 -> a -> a0) -> a0 -> Seq a -> a0 Source # foldl' :: (a0 -> a -> a0) -> a0 -> Seq a -> a0 Source # foldl1 :: (a -> a -> a) -> Seq a -> a Source # foldr :: (a -> b -> b) -> b -> Seq a -> b Source # foldr' :: (a -> b -> b) -> b -> Seq a -> b Source # foldr1 :: (a -> a -> a) -> Seq a -> a Source #
FoldableLL (DList a) a Source # |
Instance details Defined in Data.ListLike.DList Methods foldl :: (a0 -> a -> a0) -> a0 -> DList a -> a0 Source # foldl' :: (a0 -> a -> a0) -> a0 -> DList a -> a0 Source # foldl1 :: (a -> a -> a) -> DList a -> a Source # foldr :: (a -> b -> b) -> b -> DList a -> b Source # foldr' :: (a -> b -> b) -> b -> DList a -> b Source # foldr1 :: (a -> a -> a) -> DList a -> a Source #
FoldableLL (FMList a) a Source # |
Instance details Defined in Data.ListLike.FMList Methods foldl :: (a0 -> a -> a0) -> a0 -> FMList a -> a0 Source # foldl' :: (a0 -> a -> a0) -> a0 -> FMList a -> a0 Source # foldl1 :: (a -> a -> a) -> FMList a -> a Source # foldr :: (a -> b -> b) -> b -> FMList a -> b Source # foldr' :: (a -> b -> b) -> b -> FMList a -> b Source # foldr1 :: (a -> a -> a) -> FMList a -> a Source #
FoldableLL (UTF8 ByteString) Char Source # |

Instance details

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 # |

Instance details

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 # |
Instance details Defined in Data.ListLike.Vector.Vector Methods foldl :: (a0 -> a -> a0) -> a0 -> Vector a -> a0 Source # foldl' :: (a0 -> a -> a0) -> a0 -> Vector a -> a0 Source # foldl1 :: (a -> a -> a) -> Vector a -> a Source # foldr :: (a -> b -> b) -> b -> Vector a -> b Source # foldr' :: (a -> b -> b) -> b -> Vector a -> b Source # foldr1 :: (a -> a -> a) -> Vector a -> a Source #
Storable a => FoldableLL (Vector a) a Source # |
Instance details Defined in Data.ListLike.Vector.Storable Methods foldl :: (a0 -> a -> a0) -> a0 -> Vector a -> a0 Source # foldl' :: (a0 -> a -> a0) -> a0 -> Vector a -> a0 Source # foldl1 :: (a -> a -> a) -> Vector a -> a Source # foldr :: (a -> b -> b) -> b -> Vector a -> b Source # foldr' :: (a -> b -> b) -> b -> Vector a -> b Source # foldr1 :: (a -> a -> a) -> Vector a -> a Source #
Unbox a => FoldableLL (Vector a) a Source # |
Instance details Defined in Data.ListLike.Vector.Unboxed Methods foldl :: (a0 -> a -> a0) -> a0 -> Vector a -> a0 Source # foldl' :: (a0 -> a -> a0) -> a0 -> Vector a -> a0 Source # foldl1 :: (a -> a -> a) -> Vector a -> a Source # foldr :: (a -> b -> b) -> b -> Vector a -> b Source # foldr' :: (a -> b -> b) -> b -> Vector a -> b Source # foldr1 :: (a -> a -> a) -> Vector a -> a Source #
FoldableLL [a] a Source # |
Instance details Defined in Data.ListLike.FoldableLL Methods foldl :: (a0 -> a -> a0) -> a0 -> [a] -> a0 Source # foldl' :: (a0 -> a -> a0) -> a0 -> [a] -> a0 Source # foldl1 :: (a -> a -> a) -> [a] -> a Source # foldr :: (a -> b -> b) -> b -> [a] -> b Source # foldr' :: (a -> b -> b) -> b -> [a] -> b Source # foldr1 :: (a -> a -> a) -> [a] -> a Source #
Vector v a => FoldableLL (v a) a Source # |
Instance details Defined in Data.ListLike.Vector.Generic Methods foldl :: (a0 -> a -> a0) -> a0 -> v a -> a0 Source # foldl' :: (a0 -> a -> a0) -> a0 -> v a -> a0 Source # foldl1 :: (a -> a -> a) -> v a -> a Source # foldr :: (a -> b -> b) -> b -> v a -> b Source # foldr' :: (a -> b -> b) -> b -> v a -> b Source # foldr1 :: (a -> a -> a) -> v a -> a Source #
Ix i => FoldableLL (Array i e) e Source # |
Instance details Defined in Data.ListLike.Instances Methods foldl :: (a -> e -> a) -> a -> Array i e -> a Source # foldl' :: (a -> e -> a) -> a -> Array i e -> a Source # foldl1 :: (e -> e -> e) -> Array i e -> e Source # foldr :: (e -> b -> b) -> b -> Array i e -> b Source # foldr' :: (e -> b -> b) -> b -> Array i e -> b Source # foldr1 :: (e -> e -> e) -> Array i e -> e Source #

# Utilities

fold :: (FoldableLL full item, Monoid item) => full -> item Source #

Combine the elements of a structure using a monoid. ``fold` = `foldMap` id`

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 #

Evaluate each action, ignoring the results. Same as ``mapM_` `id``.

mapM_ :: (Monad m, FoldableLL full item) => (item -> m b) -> full -> m () Source #

A map in monad space, discarding results.