Skip to content

Commit

Permalink
Inline {Map,Set}.fold* when 2 arguments are given.
Browse files Browse the repository at this point in the history
Inlining folds when 2 arguments are given is consistent
with Prelude.foldr and {IntMap,IntSeT}.fold*.
  • Loading branch information
foxik committed Apr 22, 2012
1 parent 4cdb33f commit 6c430a5
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 12 deletions.
16 changes: 8 additions & 8 deletions Data/Map/Base.hs
Original file line number Diff line number Diff line change
Expand Up @@ -1648,7 +1648,7 @@ mapKeysMonotonic f (Bin sz k x l r) =
-- > let f a len = len + (length a)
-- > foldr f 0 (fromList [(5,"a"), (3,"bbb")]) == 4
foldr :: (a -> b -> b) -> b -> Map k a -> b
foldr f = go
foldr f z = go z
where
go z Tip = z
go z (Bin _ _ x l r) = go (f x (go z r)) l
Expand All @@ -1658,7 +1658,7 @@ foldr f = go
-- evaluated before using the result in the next application. This
-- function is strict in the starting value.
foldr' :: (a -> b -> b) -> b -> Map k a -> b
foldr' f = go
foldr' f z = go z
where
STRICT_1_OF_2(go)
go z Tip = z
Expand All @@ -1675,7 +1675,7 @@ foldr' f = go
-- > let f len a = len + (length a)
-- > foldl f 0 (fromList [(5,"a"), (3,"bbb")]) == 4
foldl :: (a -> b -> a) -> a -> Map k b -> a
foldl f = go
foldl f z = go z
where
go z Tip = z
go z (Bin _ _ x l r) = go (f (go z l) x) r
Expand All @@ -1685,7 +1685,7 @@ foldl f = go
-- evaluated before using the result in the next application. This
-- function is strict in the starting value.
foldl' :: (a -> b -> a) -> a -> Map k b -> a
foldl' f = go
foldl' f z = go z
where
STRICT_1_OF_2(go)
go z Tip = z
Expand All @@ -1703,7 +1703,7 @@ foldl' f = go
-- > let f k a result = result ++ "(" ++ (show k) ++ ":" ++ a ++ ")"
-- > foldrWithKey f "Map: " (fromList [(5,"a"), (3,"b")]) == "Map: (5:a)(3:b)"
foldrWithKey :: (k -> a -> b -> b) -> b -> Map k a -> b
foldrWithKey f = go
foldrWithKey f z = go z
where
go z Tip = z
go z (Bin _ kx x l r) = go (f kx x (go z r)) l
Expand All @@ -1713,7 +1713,7 @@ foldrWithKey f = go
-- evaluated before using the result in the next application. This
-- function is strict in the starting value.
foldrWithKey' :: (k -> a -> b -> b) -> b -> Map k a -> b
foldrWithKey' f = go
foldrWithKey' f z = go z
where
STRICT_1_OF_2(go)
go z Tip = z
Expand All @@ -1731,7 +1731,7 @@ foldrWithKey' f = go
-- > let f result k a = result ++ "(" ++ (show k) ++ ":" ++ a ++ ")"
-- > foldlWithKey f "Map: " (fromList [(5,"a"), (3,"b")]) == "Map: (3:b)(5:a)"
foldlWithKey :: (a -> k -> b -> a) -> a -> Map k b -> a
foldlWithKey f = go
foldlWithKey f z = go z
where
go z Tip = z
go z (Bin _ kx x l r) = go (f (go z l) kx x) r
Expand All @@ -1741,7 +1741,7 @@ foldlWithKey f = go
-- evaluated before using the result in the next application. This
-- function is strict in the starting value.
foldlWithKey' :: (a -> k -> b -> a) -> a -> Map k b -> a
foldlWithKey' f = go
foldlWithKey' f z = go z
where
STRICT_1_OF_2(go)
go z Tip = z
Expand Down
8 changes: 4 additions & 4 deletions Data/Set.hs
Original file line number Diff line number Diff line change
Expand Up @@ -606,7 +606,7 @@ fold = foldr
--
-- > toAscList set = foldr (:) [] set
foldr :: (a -> b -> b) -> b -> Set a -> b
foldr f = go
foldr f z = go z
where
go z Tip = z
go z (Bin _ x l r) = go (f x (go z r)) l
Expand All @@ -616,7 +616,7 @@ foldr f = go
-- evaluated before using the result in the next application. This
-- function is strict in the starting value.
foldr' :: (a -> b -> b) -> b -> Set a -> b
foldr' f = go
foldr' f z = go z
where
STRICT_1_OF_2(go)
go z Tip = z
Expand All @@ -630,7 +630,7 @@ foldr' f = go
--
-- > toDescList set = foldl (flip (:)) [] set
foldl :: (a -> b -> a) -> a -> Set b -> a
foldl f = go
foldl f z = go z
where
go z Tip = z
go z (Bin _ x l r) = go (f (go z l) x) r
Expand All @@ -640,7 +640,7 @@ foldl f = go
-- evaluated before using the result in the next application. This
-- function is strict in the starting value.
foldl' :: (a -> b -> a) -> a -> Set b -> a
foldl' f = go
foldl' f z = go z
where
STRICT_1_OF_2(go)
go z Tip = z
Expand Down

0 comments on commit 6c430a5

Please sign in to comment.