License | BSD-like (see LICENSE) |
---|---|

Maintainer | Brent Yorgey <byorgey@cis.upenn.edu>, Stephanie Weirich <sweirich@cis.upenn.edu> |

Portability | GHC only (-XKitchenSink) |

Safe Haskell | Safe |

Language | Haskell2010 |

Various utilities for the Unbound library.

# Documentation

class Foldable f => Collection f where Source #

Collections are foldable types that support empty, singleton, union, and map operations. The result of a free variable calculation may be any collection. Instances are provided for lists, sets, and multisets.

An empty collection. Must be the identity for `union`

.

singleton :: a -> f a Source #

Create a singleton collection.

union :: Ord a => f a -> f a -> f a Source #

An associative combining operation. The `Ord`

constraint is in
order to accommodate sets.

cmap :: (Ord a, Ord b) => (a -> b) -> f a -> f b Source #

Collections must be functorial. The normal `Functor`

class
won't do because of the `Ord`

constraint on sets.

## Instances

Collection [] Source # | Lists are containers under concatenation. Lists preserve ordering and multiplicity of elements. |

Collection Set Source # | Sets are containers under union, which preserve only occurrence, not multiplicity or ordering. |

Collection Multiset Source # | Multisets are containers which preserve multiplicity but not ordering. |

unions :: (Ord a, Collection f) => [f a] -> f a Source #

Combine a list of containers into one.

fromList :: (Ord a, Collection f) => [a] -> f a Source #

Create a collection from a list of elements.

filterC :: (Collection f, Ord a) => f (Maybe a) -> f a Source #

Remove the `Nothing`

s from a collection.

A simple representation of multisets.

## Instances

Foldable Multiset Source # | |

Defined in Unbound.Util fold :: Monoid m => Multiset m -> m # foldMap :: Monoid m => (a -> m) -> Multiset a -> m # foldr :: (a -> b -> b) -> b -> Multiset a -> b # foldr' :: (a -> b -> b) -> b -> Multiset a -> b # foldl :: (b -> a -> b) -> b -> Multiset a -> b # foldl' :: (b -> a -> b) -> b -> Multiset a -> b # foldr1 :: (a -> a -> a) -> Multiset a -> a # foldl1 :: (a -> a -> a) -> Multiset a -> a # elem :: Eq a => a -> Multiset a -> Bool # maximum :: Ord a => Multiset a -> a # minimum :: Ord a => Multiset a -> a # | |

Collection Multiset Source # | Multisets are containers which preserve multiplicity but not ordering. |