diff options
| author | aarne <aarne@cs.chalmers.se> | 2008-06-25 16:43:48 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2008-06-25 16:43:48 +0000 |
| commit | b96b36f43de3e2f8b58d5f539daa6f6d47f25870 (patch) | |
| tree | 0992334be13cec6538a1dea22fbbf26ad6bdf224 /src/GF/Data/RedBlack.hs | |
| parent | fe367412e0aeb4ad5c02de68e6eca382e0f96984 (diff) | |
removed src for 2.9
Diffstat (limited to 'src/GF/Data/RedBlack.hs')
| -rw-r--r-- | src/GF/Data/RedBlack.hs | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/src/GF/Data/RedBlack.hs b/src/GF/Data/RedBlack.hs deleted file mode 100644 index fd70dba63..000000000 --- a/src/GF/Data/RedBlack.hs +++ /dev/null @@ -1,64 +0,0 @@ ----------------------------------------------------------------------- --- | --- Module : RedBlack --- Maintainer : Markus Forsberg --- Stability : Stable --- Portability : Haskell 98 --- --- > CVS $Date: 2005/04/21 16:22:07 $ --- > CVS $Author: bringert $ --- > CVS $Revision: 1.6 $ --- --- Modified version of Osanaki's implementation. ------------------------------------------------------------------------------ - -module GF.Data.RedBlack ( - emptyTree, - isEmpty, - Tree, - lookupTree, - insertTree, - flatten - ) where - -data Color = R | B - deriving (Show,Read) - -data Tree key el = E | T Color (Tree key el) (key,el) (Tree key el) - deriving (Show,Read) - -balance :: Color -> Tree a b -> (a,b) -> Tree a b -> Tree a b -balance B (T R (T R a x b) y c) z d = T R (T B a x b) y (T B c z d) -balance B (T R a x (T R b y c)) z d = T R (T B a x b) y (T B c z d) -balance B a x (T R (T R b y c) z d) = T R (T B a x b) y (T B c z d) -balance B a x (T R b y (T R c z d)) = T R (T B a x b) y (T B c z d) -balance color a x b = T color a x b - -emptyTree :: Tree key el -emptyTree = E - -isEmpty :: Tree key el -> Bool -isEmpty (E) = True -isEmpty _ = False - -lookupTree :: Ord a => a -> Tree a b -> Maybe b -lookupTree _ E = Nothing -lookupTree x (T _ a (y,z) b) - | x < y = lookupTree x a - | x > y = lookupTree x b - | otherwise = return z - -insertTree :: Ord a => (a,b) -> Tree a b -> Tree a b -insertTree (key,el) tree = T B a y b - where - T _ a y b = ins tree - ins E = T R E (key,el) E - ins (T color a y@(key',el') b) - | key < key' = balance color (ins a) y b - | key > key' = balance color a y (ins b) - | otherwise = T color a (key',el) b - -flatten :: Tree a b -> [(a,b)] -flatten E = [] -flatten (T _ left (key,e) right) - = (flatten left) ++ ((key,e):(flatten right)) |
