@@ -1,4 +1,4 @@
1−module Data.Map
1+module Data.SortedMap
22
33-- TODO: write merge and split
44
@@ -189,25 +189,25 @@ treeToList (Leaf k v) = [(k, v)]
189189treeToList (Branch2 t1 _ t2) = treeToList t1 ++ treeToList t2
190190treeToList (Branch3 t1 _ t2 _ t3) = treeToList t1 ++ treeToList t2 ++ treeToList t3
191191
192−data Map : Type -> Type -> Type where
193− Empty : Map k v
194− M : (n:Nat) -> Tree n k v -> Map k v
192+data SortedMap : Type -> Type -> Type where
193+ Empty : SortedMap k v
194+ M : (n:Nat) -> Tree n k v -> SortedMap k v
195195
196−empty : Map k v
196+empty : SortedMap k v
197197empty = Empty
198198
199−lookup : Ord k => k -> Map k v -> Maybe v
199+lookup : Ord k => k -> SortedMap k v -> Maybe v
200200lookup _ Empty = Nothing
201201lookup k (M _ t) = treeLookup k t
202202
203−insert : Ord k => k -> v -> Map k v -> Map k v
203+insert : Ord k => k -> v -> SortedMap k v -> SortedMap k v
204204insert k v Empty = M O (Leaf k v)
205205insert k v (M _ t) =
206206 case treeInsert k v t of
207207 Left t' => (M _ t')
208208 Right t' => (M _ t')
209209
210−delete : Ord k => k -> Map k v -> Map k v
210+delete : Ord k => k -> SortedMap k v -> SortedMap k v
211211delete _ Empty = Empty
212212delete k (M O t) =
213213 case treeDelete k t of
@@ -218,10 +218,10 @@ delete k (M (S _) t) =
218218 Left t' => (M _ t')
219219 Right t' => (M _ t')
220220
221−fromList : Ord k => List (k, v) -> Map k v
221+fromList : Ord k => List (k, v) -> SortedMap k v
222222fromList l = foldl (flip (uncurry insert)) empty l
223223
224−toList : Ord k => Map k v -> List (k, v)
224+toList : Ord k => SortedMap k v -> List (k, v)
225225toList Empty = []
226226toList (M _ t) = treeToList t
227227
@@ -230,6 +230,6 @@ instance Functor (Tree n k) where
230230 fmap f (Branch2 t1 k t2) = Branch2 (fmap f t1) k (fmap f t2)
231231 fmap f (Branch3 t1 k1 t2 k2 t3) = Branch3 (fmap f t1) k1 (fmap f t2) k2 (fmap f t3)
232232
233−instance Functor (Map k) where
233+instance Functor (SortedMap k) where
234234 fmap _ Empty = Empty
235235 fmap f (M _ t) = M _ (fmap f t)