unbound-0.4.4: Generic support for programming with names and binders

LicenseBSD-like (see LICENSE)
MaintainerBrent Yorgey <byorgey@cis.upenn.edu>, Stephanie Weirich <sweirich@cis.upenn.edu>
PortabilityGHC only (-XKitchenSink)
Safe HaskellSafe
LanguageHaskell2010

Unbound.Util

Description

Various utilities for the Unbound library.

Synopsis

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.

Methods

emptyC :: f a Source

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 Nothings from a collection.

newtype Multiset a Source

A simple representation of multisets.

Constructors

Multiset (Map a Int) 

Instances

Foldable Multiset Source 
Collection Multiset Source

Multisets are containers which preserve multiplicity but not ordering.

disjoint :: Ord a => Set a -> Set a -> Bool Source