| |||||||||||||||||||||||||||||||||||||

| |||||||||||||||||||||||||||||||||||||

| |||||||||||||||||||||||||||||||||||||

Description | |||||||||||||||||||||||||||||||||||||

An Olist is an ordered list. The main function of this module is the implementation of the finite subset structure of a given type a. Finite sets are represented as ordered lists and the basic set functions and relations like union, intersection, included etc. are provided.
| |||||||||||||||||||||||||||||||||||||

Synopsis | |||||||||||||||||||||||||||||||||||||

| |||||||||||||||||||||||||||||||||||||

The Olist type
| |||||||||||||||||||||||||||||||||||||

type Olist a = [a] | |||||||||||||||||||||||||||||||||||||

The construction and test for ordered lists | |||||||||||||||||||||||||||||||||||||

olist :: Ord a => [a] -> Olist a | |||||||||||||||||||||||||||||||||||||

For example, > olist ["b", "c", "b", "a", "c", "a"] ["a","b","c"] As the example shows, multiple occuring members are deleted. (The implementation builts the ordered list with component-wise | |||||||||||||||||||||||||||||||||||||

isOlist :: Ord a => [a] -> Bool | |||||||||||||||||||||||||||||||||||||

Checks if the given argument is ordered. | |||||||||||||||||||||||||||||||||||||

The empty list | |||||||||||||||||||||||||||||||||||||

empty :: Ord a => Olist a | |||||||||||||||||||||||||||||||||||||

Returns the empty list > Olist.empty [] (Note, that there is also an | |||||||||||||||||||||||||||||||||||||

isEmpty :: Ord a => Olist a -> Bool | |||||||||||||||||||||||||||||||||||||

Checks on emptiness; i.e. it is the same as the Haskell native > isEmpty [1,2,3] False | |||||||||||||||||||||||||||||||||||||

Singular operations on ordered lists | |||||||||||||||||||||||||||||||||||||

member :: Ord a => a -> Olist a -> Bool | |||||||||||||||||||||||||||||||||||||

For example, > member 7 [3,5,7,9] True > 4 `member` [2,3,4,5] True | |||||||||||||||||||||||||||||||||||||

insert :: Ord a => a -> Olist a -> Olist a | |||||||||||||||||||||||||||||||||||||

For example, > insert 7 [3,5,9,11] [3,5,7,9,11] > insert 7 [3,5,7,9,11] [3,5,7,9,11] | |||||||||||||||||||||||||||||||||||||

delete :: Ord a => a -> Olist a -> Olist a | |||||||||||||||||||||||||||||||||||||

For example, > delete 7 [3,5,7,9,11] [3,5,9,11] > delete 7 [3,5,9,11] [3,5,9,11] | |||||||||||||||||||||||||||||||||||||

The common binary operations on sets | |||||||||||||||||||||||||||||||||||||

These functions all assume, that the arguments are actually Olist values. Otherwise, the function doesn't terminate with an
error, it just produces unintended results.
| |||||||||||||||||||||||||||||||||||||

included :: Ord a => Olist a -> Olist a -> Bool | |||||||||||||||||||||||||||||||||||||

Implementation of ⊆ on (finite) sets. For example, > included "acd" "abcd" -- recall, that "acd" is the list ['a', 'c', 'd'] True > [2,4] `included` [1,2,3,4,5] True | |||||||||||||||||||||||||||||||||||||

properlyIncluded :: Ord a => Olist a -> Olist a -> Bool | |||||||||||||||||||||||||||||||||||||

Implementation of the strict version ⊂ of ⊆, i.e. the first argument must be included, but different to the second one. | |||||||||||||||||||||||||||||||||||||

disjunct :: Ord a => Olist a -> Olist a -> Bool | |||||||||||||||||||||||||||||||||||||

Two finite sets, i.e. two ordered lists are > disjunct "acd" "bef" True > "abc" `disjunct` "bef" False > [] `disjunct` [1,2,3] True | |||||||||||||||||||||||||||||||||||||

properlyDisjunct :: Ord a => Olist a -> Olist a -> Bool | |||||||||||||||||||||||||||||||||||||

Two finite sets are > [] `properlyDisjunct` [1,2,3] False | |||||||||||||||||||||||||||||||||||||

equal :: Ord a => Olist a -> Olist a -> Bool | |||||||||||||||||||||||||||||||||||||

The equality of two finite sets; actually it is just another name for (==) on ordered lists.
| |||||||||||||||||||||||||||||||||||||

union :: Ord a => Olist a -> Olist a -> Olist a | |||||||||||||||||||||||||||||||||||||

The implementation of ∪, for example > [1,2,4,5] `union` [1,3,5,7] [1,2,3,4,5,7] | |||||||||||||||||||||||||||||||||||||

intersection :: Ord a => Olist a -> Olist a -> Olist a | |||||||||||||||||||||||||||||||||||||

The implementation of ∩, for example > [1,2,4,5] `intersection` [1,3,5,7] [1,5] | |||||||||||||||||||||||||||||||||||||

difference :: Ord a => Olist a -> Olist a -> Olist a | |||||||||||||||||||||||||||||||||||||

Implementation of the difference operator \ on sets. For example, > [1,2,4,5] `difference` [1,3,5,7] [2,4] | |||||||||||||||||||||||||||||||||||||

opposition :: Ord a => Olist a -> Olist a -> Olist a | |||||||||||||||||||||||||||||||||||||

The > [1,2,4,5] `opposition` [1,3,5,7] [2,3,4,7] | |||||||||||||||||||||||||||||||||||||

unionList :: Ord a => [Olist a] -> Olist a | |||||||||||||||||||||||||||||||||||||

Returns the union of a list of ordered lists. For example, > unionList [[1,3,5], [1,2,3], [1,5,9]] [1,2,3,5,9] > unionList [] [] | |||||||||||||||||||||||||||||||||||||

intersectionList :: Ord a => [Olist a] -> Olist a | |||||||||||||||||||||||||||||||||||||

Returns the intersection of a list of ordered lists. The result is undefined for the empty list. > intersectionList [[1,3,5], [1,2,3], [1,5,9]] [1] > intersectionList [] *** Exception: Olist.intersectionList: not defined for empty list argument | |||||||||||||||||||||||||||||||||||||

Produced by Haddock version 2.4.2 |