# Module Data.Set

An efficient implementation of set based on finite maps.

## Summary of exported operations:

 ```empty :: Map a ()``` Returns an empty set. ```fromList :: Ord a => [a] -> Map a ()``` Transforms a list into a set of its elements. ```null :: Map a () -> Bool``` Test for an empty set. ```insert :: Ord a => a -> Map a () -> Map a ()``` Inserts an element into a set if it is not already there. ```delete :: Ord a => a -> Map a () -> Map a ()``` Deletes an element from a set. ```deleteAll :: Ord a => [a] -> Map a () -> Map a ()``` Deletes a list of elements from a set. ```size :: Map a () -> Int``` Computes the size of two sets. ```member :: Ord a => a -> Map a () -> Bool``` Returns `True` if an element is contained in a set. ```difference :: Ord a => Map a () -> Map a () -> Map a ()``` Computes the difference of two sets. ```toList :: Map a () -> [a]``` Transforms a set into an ordered list of its elements. ```union :: Ord a => Map a () -> Map a () -> Map a ()``` Computes the union of two sets.

## Exported datatypes:

Set

The type of sets of elements.

Type synonym: `Set a = Map a ()`

## Exported operations:

 ```empty :: Map a ()``` Returns an empty set. Further infos: solution complete, i.e., able to compute all solutions
 ```fromList :: Ord a => [a] -> Map a ()``` Transforms a list into a set of its elements.
 ```null :: Map a () -> Bool``` Test for an empty set.
 ```insert :: Ord a => a -> Map a () -> Map a ()``` Inserts an element into a set if it is not already there.
 ```delete :: Ord a => a -> Map a () -> Map a ()``` Deletes an element from a set.
 ```deleteAll :: Ord a => [a] -> Map a () -> Map a ()``` Deletes a list of elements from a set.
 ```size :: Map a () -> Int``` Computes the size of two sets. Further infos: solution complete, i.e., able to compute all solutions
 ```member :: Ord a => a -> Map a () -> Bool``` Returns `True` if an element is contained in a set. Example call: `(member e s)` Parameters: `e` : an element to be checked for containment `s` : a set Returns: `True` if `e` is contained in `s`
 ```difference :: Ord a => Map a () -> Map a () -> Map a ()``` Computes the difference of two sets.
 ```toList :: Map a () -> [a]``` Transforms a set into an ordered list of its elements.
 ```union :: Ord a => Map a () -> Map a () -> Map a ()``` Computes the union of two sets.