summaryrefslogtreecommitdiff
path: root/libraries
diff options
context:
space:
mode:
authorGábor Lehel <illissius@gmail.com>2012-10-14 16:23:53 +0200
committerIan Lynagh <ian@well-typed.com>2012-10-27 16:17:05 +0100
commit57f65911762147ae20af7e41166597e9f0c34ec8 (patch)
tree9c1371e038a42ae40e93b7a791520132257419e2 /libraries
parent6f32757e57ff0d6066e75660677b71afbd465a46 (diff)
downloadhaskell-57f65911762147ae20af7e41166597e9f0c34ec8.tar.gz
alpha-rename the type signatures of foldl, foldl', and scanl to be consistent with foldr and scanr
Diffstat (limited to 'libraries')
-rw-r--r--libraries/base/Data/Foldable.hs4
-rw-r--r--libraries/base/Data/List.hs8
-rw-r--r--libraries/base/GHC/List.lhs4
3 files changed, 8 insertions, 8 deletions
diff --git a/libraries/base/Data/Foldable.hs b/libraries/base/Data/Foldable.hs
index 4449ca9485..afd9afa190 100644
--- a/libraries/base/Data/Foldable.hs
+++ b/libraries/base/Data/Foldable.hs
@@ -132,14 +132,14 @@ class Foldable t where
-- | Left-associative fold of a structure.
--
-- @'foldl' f z = 'Prelude.foldl' f z . 'toList'@
- foldl :: (a -> b -> a) -> a -> t b -> a
+ foldl :: (b -> a -> b) -> b -> t a -> b
foldl f z t = appEndo (getDual (foldMap (Dual . Endo . flip f) t)) z
-- | Left-associative fold of a structure.
-- but with strict application of the operator.
--
-- @'foldl' f z = 'List.foldl'' f z . 'toList'@
- foldl' :: (a -> b -> a) -> a -> t b -> a
+ foldl' :: (b -> a -> b) -> b -> t a -> b
foldl' f z0 xs = foldr f' id xs z0
where f' x k z = k $! f z x
diff --git a/libraries/base/Data/List.hs b/libraries/base/Data/List.hs
index c3d1a842a1..7a05939552 100644
--- a/libraries/base/Data/List.hs
+++ b/libraries/base/Data/List.hs
@@ -45,8 +45,8 @@ module Data.List
-- * Reducing lists (folds)
- , foldl -- :: (a -> b -> a) -> a -> [b] -> a
- , foldl' -- :: (a -> b -> a) -> a -> [b] -> a
+ , foldl -- :: (b -> a -> b) -> b -> [a] -> b
+ , foldl' -- :: (b -> a -> b) -> b -> [a] -> b
, foldl1 -- :: (a -> a -> a) -> [a] -> a
, foldl1' -- :: (a -> a -> a) -> [a] -> a
, foldr -- :: (a -> b -> b) -> b -> [a] -> b
@@ -68,7 +68,7 @@ module Data.List
-- * Building lists
-- ** Scans
- , scanl -- :: (a -> b -> a) -> a -> [b] -> [a]
+ , scanl -- :: (b -> a -> b) -> b -> [a] -> [b]
, scanl1 -- :: (a -> a -> a) -> [a] -> [a]
, scanr -- :: (a -> b -> b) -> b -> [a] -> [b]
, scanr1 -- :: (a -> a -> a) -> [a] -> [a]
@@ -1004,7 +1004,7 @@ unfoldr f b =
-- -----------------------------------------------------------------------------
-- | A strict version of 'foldl'.
-foldl' :: (a -> b -> a) -> a -> [b] -> a
+foldl' :: (b -> a -> b) -> b -> [a] -> b
#ifdef __GLASGOW_HASKELL__
foldl' f z0 xs0 = lgo z0 xs0
where lgo z [] = z
diff --git a/libraries/base/GHC/List.lhs b/libraries/base/GHC/List.lhs
index 5dfd1ac0e7..b32cea91bf 100644
--- a/libraries/base/GHC/List.lhs
+++ b/libraries/base/GHC/List.lhs
@@ -166,7 +166,7 @@ filterFB c p x r | p x = x `c` r
-- can be inlined, and then (often) strictness-analysed,
-- and hence the classic space leak on foldl (+) 0 xs
-foldl :: (a -> b -> a) -> a -> [b] -> a
+foldl :: (b -> a -> b) -> b -> [a] -> b
foldl f z0 xs0 = lgo z0 xs0
where
lgo z [] = z
@@ -181,7 +181,7 @@ foldl f z0 xs0 = lgo z0 xs0
--
-- > last (scanl f z xs) == foldl f z xs.
-scanl :: (a -> b -> a) -> a -> [b] -> [a]
+scanl :: (b -> a -> b) -> b -> [a] -> [b]
scanl f q ls = q : (case ls of
[] -> []
x:xs -> scanl f (f q x) xs)