@@ -1,4 +1,4 @@
1−module Data.Map
1+module Data.SortedMap
3-- TODO: write merge and split
3-- TODO: write merge and split
@@ -189,25 +189,25 @@ treeToList (Leaf k v) = [(k, v)]
189treeToList (Branch2 t1 _ t2) = treeToList t1 ++ treeToList t2
189treeToList (Branch2 t1 _ t2) = treeToList t1 ++ treeToList t2
190treeToList (Branch3 t1 _ t2 _ t3) = treeToList t1 ++ treeToList t2 ++ treeToList t3
190treeToList (Branch3 t1 _ t2 _ t3) = treeToList t1 ++ treeToList t2 ++ treeToList t3
192−data Map : Type -> Type -> Type where
192+data SortedMap : Type -> Type -> Type where
193− Empty : Map k v
193+ Empty : SortedMap k v
194− M : (n:Nat) -> Tree n k v -> Map k v
194+ M : (n:Nat) -> Tree n k v -> SortedMap k v
196−empty : Map k v
196+empty : SortedMap k v
197empty = Empty
197empty = Empty
199−lookup : Ord k => k -> Map k v -> Maybe v
199+lookup : Ord k => k -> SortedMap k v -> Maybe v
200lookup _ Empty = Nothing
200lookup _ Empty = Nothing
201lookup k (M _ t) = treeLookup k t
201lookup k (M _ t) = treeLookup k t
203−insert : Ord k => k -> v -> Map k v -> Map k v
203+insert : Ord k => k -> v -> SortedMap k v -> SortedMap k v
204insert k v Empty = M O (Leaf k v)
204insert k v Empty = M O (Leaf k v)
205insert k v (M _ t) =
205insert k v (M _ t) =
206 case treeInsert k v t of
206 case treeInsert k v t of
207 Left t' => (M _ t')
207 Left t' => (M _ t')
208 Right t' => (M _ t')
208 Right t' => (M _ t')
210−delete : Ord k => k -> Map k v -> Map k v
210+delete : Ord k => k -> SortedMap k v -> SortedMap k v
211delete _ Empty = Empty
211delete _ Empty = Empty
212delete k (M O t) =
212delete k (M O t) =
213 case treeDelete k t of
213 case treeDelete k t of
@@ -218,10 +218,10 @@ delete k (M (S _) t) =
218 Left t' => (M _ t')
218 Left t' => (M _ t')
219 Right t' => (M _ t')
219 Right t' => (M _ t')
221−fromList : Ord k => List (k, v) -> Map k v
221+fromList : Ord k => List (k, v) -> SortedMap k v
222fromList l = foldl (flip (uncurry insert)) empty l
222fromList l = foldl (flip (uncurry insert)) empty l
224−toList : Ord k => Map k v -> List (k, v)
224+toList : Ord k => SortedMap k v -> List (k, v)
225toList Empty = []
225toList Empty = []
226toList (M _ t) = treeToList t
226toList (M _ t) = treeToList t
@@ -230,6 +230,6 @@ instance Functor (Tree n k) where
230 fmap f (Branch2 t1 k t2) = Branch2 (fmap f t1) k (fmap f t2)
230 fmap f (Branch2 t1 k t2) = Branch2 (fmap f t1) k (fmap f t2)
231 fmap f (Branch3 t1 k1 t2 k2 t3) = Branch3 (fmap f t1) k1 (fmap f t2) k2 (fmap f t3)
231 fmap f (Branch3 t1 k1 t2 k2 t3) = Branch3 (fmap f t1) k1 (fmap f t2) k2 (fmap f t3)
233−instance Functor (Map k) where
233+instance Functor (SortedMap k) where
234 fmap _ Empty = Empty
234 fmap _ Empty = Empty
235 fmap f (M _ t) = M _ (fmap f t)
235 fmap f (M _ t) = M _ (fmap f t)