ListLike-4.5: Generic support for list-like structures

CopyrightCopyright (C) 2007 John Goerzen
LicenseBSD3
MaintainerJohn Lato <jwlato@gmail.com>
Stabilityprovisional
Portabilityportable
Safe HaskellSafe
LanguageHaskell98

Data.ListLike.FoldableLL

Contents

Description

Generic tools for data structures that can be folded.

Written by John Goerzen, jgoerzen@complete.org

Synopsis

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

FoldableLL CharStringLazy Char Source # 

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 CharString Char Source # 

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 Chars Char Source # 

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 [a] a Source # 

Methods

foldl :: (a -> a -> a) -> a -> [a] -> a Source #

foldl' :: (a -> a -> a) -> a -> [a] -> a 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 #

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.