module PTTrees (insert, PrefixTree(..), PrefixElem(..)) where data PrefixTree a b = PTNil | PT (PrefixElem a b) (PrefixTree a b) (PrefixTree a b) data PrefixElem a b = PTE a b (PrefixTree a b) {-partain-} --insert :: Char -> Int -> PrefixTree Char Int -> PrefixTree Char Int {-partain-} insert k v PTNil = PT (PTE k v PTNil) PTNil PTNil insert k v (PT p@(PTE k' v' t) l r) | k < k' = PT p (insert k v l) r | k > k' = PT p l (insert k v r) | otherwise = PT p l r