Manually inline {Map,IntMap}.map.
authorMilan Straka <fox@ucw.cz>
Sun, 22 Apr 2012 16:06:21 +0000 (18:06 +0200)
committerMilan Straka <fox@ucw.cz>
Sun, 22 Apr 2012 16:06:21 +0000 (18:06 +0200)
Data/IntMap/Base.hs
Data/IntMap/Strict.hs
Data/Map/Base.hs
Data/Map/Strict.hs

index f8c026c..f2ae1a8 100644 (file)
@@ -1125,7 +1125,11 @@ isSubmapOfBy _         Nil _           = True
 -- > map (++ "x") (fromList [(5,"a"), (3,"b")]) == fromList [(3, "bx"), (5, "ax")]
 
 map :: (a -> b) -> IntMap a -> IntMap b
-map f = mapWithKey (\_ x -> f x)
+map f t
+  = case t of
+      Bin p m l r -> Bin p m (map f l) (map f r)
+      Tip k x     -> Tip k (f x)
+      Nil         -> Nil
 
 -- | /O(n)/. Map a function over all values in the map.
 --
index e9ebadf..77a8d10 100644 (file)
@@ -692,7 +692,11 @@ updateMin f = updateMinWithKey (const f)
 -- > map (++ "x") (fromList [(5,"a"), (3,"b")]) == fromList [(3, "bx"), (5, "ax")]
 
 map :: (a -> b) -> IntMap a -> IntMap b
-map f = mapWithKey (\_ x -> f x)
+map f t
+  = case t of
+      Bin p m l r -> Bin p m (map f l) (map f r)
+      Tip k x     -> Tip k $! f x
+      Nil         -> Nil
 
 -- | /O(n)/. Map a function over all values in the map.
 --
index 966cba7..2d7dd07 100644 (file)
@@ -1511,7 +1511,8 @@ mapEitherWithKey f (Bin _ kx x l r) = case f kx x of
 -- > map (++ "x") (fromList [(5,"a"), (3,"b")]) == fromList [(3, "bx"), (5, "ax")]
 
 map :: (a -> b) -> Map k a -> Map k b
-map f = mapWithKey (\_ x -> f x)
+map _ Tip = Tip
+map f (Bin sx kx x l r) = Bin sx kx (f x) (map f l) (map f r)
 
 -- | /O(n)/. Map a function over all values in the map.
 --
index 6cc160f..637c5f9 100644 (file)
@@ -901,7 +901,8 @@ mapEitherWithKey f (Bin _ kx x l r) = case f kx x of
 -- > map (++ "x") (fromList [(5,"a"), (3,"b")]) == fromList [(3, "bx"), (5, "ax")]
 
 map :: (a -> b) -> Map k a -> Map k b
-map f = mapWithKey (\_ x -> f x)
+map _ Tip = Tip
+map f (Bin sx kx x l r) = let x' = f x in x' `seq` Bin sx kx x' (map f l) (map f r)
 
 -- | /O(n)/. Map a function over all values in the map.
 --