Data.ListLike.Utils

ListLike-4.7.8.2: 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 | None
Language | Haskell2010

Data.ListLike.Utils

Description

Utilities for `ListLike` and friends. More functions similar to `List` but not part of the main typeclass.

Written by John Goerzen, jgoerzen@complete.org

Synopsis

- and :: ListLike full Bool => full -> Bool
- or :: ListLike full Bool => full -> Bool
- sum :: (Num a, ListLike full a) => full -> a
- product :: (Num a, ListLike full a) => full -> a
- zip :: (ListLike full item, ListLike fullb itemb, ListLike result (item, itemb)) => full -> fullb -> result
- zipWith :: (ListLike full item, ListLike fullb itemb, ListLike result resultitem) => (item -> itemb -> resultitem) -> full -> fullb -> result
- unzip :: (ListLike full (itema, itemb), ListLike ra itema, ListLike rb itemb) => full -> (ra, rb)
- sequence_ :: (Monad m, FoldableLL full (m item)) => full -> m ()
- toMonadPlus :: (MonadPlus m, ListLike full a) => full -> m (a, full)
- list :: ListLike full a => b -> (a -> full -> b) -> full -> b
- intercalate :: (ListLike a item, ListLike b a) => a -> b -> a

# Documentation

and :: ListLike full Bool => full -> Bool #

Returns True if all elements are True

or :: ListLike full Bool => full -> Bool #

Returns True if any element is True

sum :: (Num a, ListLike full a) => full -> a #

The sum of the list

product :: (Num a, ListLike full a) => full -> a #

The product of the list

zip :: (ListLike full item, ListLike fullb itemb, ListLike result (item, itemb)) => full -> fullb -> result #

Takes two lists and returns a list of corresponding pairs.

zipWith :: (ListLike full item, ListLike fullb itemb, ListLike result resultitem) => (item -> itemb -> resultitem) -> full -> fullb -> result #

Takes two lists and combines them with a custom combining function

unzip :: (ListLike full (itema, itemb), ListLike ra itema, ListLike rb itemb) => full -> (ra, rb) #

Converts a list of pairs into two separate lists of elements

sequence_ :: (Monad m, FoldableLL full (m item)) => full -> m () #

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

toMonadPlus :: (MonadPlus m, ListLike full a) => full -> m (a, full) #

Converts to a MonadPlus instance

list :: ListLike full a => b -> (a -> full -> b) -> full -> b #

List-like destructor (like Data.Maybe.maybe)

intercalate :: (ListLike a item, ListLike b a) => a -> b -> a #

`intercalate` `xs xss` is equivalent to `(`concat` (`intersperse` xs xss))`. It inserts the list `xs` in between the lists in `xss` and concatenates the result.