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