ListLike-4.1.1: Generic support for list-like structures

CopyrightCopyright (C) 2007 John Goerzen
LicenseBSD3
MaintainerJohn Lato <jwlato@gmail.com>
Stabilityprovisional
Portabilityportable
Safe HaskellSafe-Inferred
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

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.