Module Data.Table.RBTree

Library with an implementation of tables as red-black trees:

A table is a finite mapping from keys to values. All the operations on tables are generic, i.e., one has to provide an explicit order predicate on elements. Each inner node in the red-black tree contains a key-value association.

Author: Johannes Koj, Michael Hanus, Bernd Brassel

Version: December 2018

Summary of exported operations:

 ```empty :: Eq a => (a -> a -> Bool) -> RedBlackTree (a,b)```    Returns an empty table, i.e., an empty red-black tree. ```isEmpty :: RedBlackTree (a,b) -> Bool```    tests whether a given table is empty ```lookup :: a -> RedBlackTree (a,b) -> Maybe b```    Looks up an entry in a table. ```update :: a -> b -> RedBlackTree (a,b) -> RedBlackTree (a,b)```    Inserts or updates an element in a table. ```toList :: RedBlackTree (a,b) -> [(a,b)]```    Transforms the nodes of red-black tree into a list. ```delete :: a -> RedBlackTree (a,b) -> RedBlackTree (a,b)```

Exported datatypes:

TableRBT

Type synonym: `TableRBT a b = RedBlackTree (a,b)`

Exported operations:

 ```empty :: Eq a => (a -> a -> Bool) -> RedBlackTree (a,b)```    Returns an empty table, i.e., an empty red-black tree.
 ```isEmpty :: RedBlackTree (a,b) -> Bool```    tests whether a given table is empty Further infos: solution complete, i.e., able to compute all solutions
 ```lookup :: a -> RedBlackTree (a,b) -> Maybe b```    Looks up an entry in a table. Example call: `(lookup k t)` Parameters: `k` : a key under which a value is stored `t` : a table (represented as a red-black tree) Returns: (Just v) if v is the value stored with key k, otherwise Nothing is returned.
 ```update :: a -> b -> RedBlackTree (a,b) -> RedBlackTree (a,b)```    Inserts or updates an element in a table.
 ```toList :: RedBlackTree (a,b) -> [(a,b)]```    Transforms the nodes of red-black tree into a list. Further infos: solution complete, i.e., able to compute all solutions
 ```delete :: a -> RedBlackTree (a,b) -> RedBlackTree (a,b)```