1 module PTTrees (insert, PrefixTree(..), PrefixElem(..)) where
    2 
    3 data PrefixTree a b = PTNil |
    4                       PT (PrefixElem a b) (PrefixTree a b) (PrefixTree a b)
    5 
    6 data PrefixElem a b = PTE a b (PrefixTree a b)
    7 
    8 {-partain-}
    9 --insert :: Char -> Int -> PrefixTree Char Int -> PrefixTree Char Int
   10 {-partain-}
   11 
   12 insert k v PTNil = 
   13         PT (PTE k v PTNil) PTNil PTNil
   14 insert k v (PT p@(PTE k' v' t) l r)
   15         | k < k'  = PT p (insert k v l) r
   16         | k > k'  = PT p l (insert k v r)
   17         | otherwise = PT p l r