[project @ 2002-05-09 13:16:29 by simonmar]
[ghc-base.git] / Data / List.hs
index 9082db5..245712f 100644 (file)
@@ -1,16 +1,14 @@
 {-# OPTIONS -fno-implicit-prelude #-}
 -----------------------------------------------------------------------------
--- 
+-- |
 -- Module      :  Data.List
 -- Copyright   :  (c) The University of Glasgow 2001
--- License     :  BSD-style (see the file libraries/core/LICENSE)
+-- License     :  BSD-style (see the file libraries/base/LICENSE)
 -- 
 -- Maintainer  :  libraries@haskell.org
 -- Stability   :  provisional
 -- Portability :  portable
 --
--- $Id: List.hs,v 1.2 2001/12/21 15:07:21 simonmar Exp $
---
 -- Operations on lists.
 --
 -----------------------------------------------------------------------------
@@ -90,6 +88,7 @@ module Data.List
    , length           -- :: [a] -> Int
    , (!!)             -- :: [a] -> Int -> a
    , foldl            -- :: (a -> b -> a) -> a -> [b] -> a
+   , foldl'           -- :: (a -> b -> a) -> a -> [b] -> a
    , foldl1           -- :: (a -> a -> a) -> [a] -> a
    , scanl             -- :: (a -> b -> a) -> a -> [b] -> [a]
    , scanl1            -- :: (a -> a -> a) -> [a] -> [a]
@@ -521,6 +520,14 @@ unfoldr f b  =
    Just (a,new_b) -> a : unfoldr f new_b
    Nothing        -> []
 
+
+-- -----------------------------------------------------------------------------
+-- strict version of foldl
+
+foldl'           :: (a -> b -> a) -> a -> [b] -> a
+foldl' f a []     = a
+foldl' f a (x:xs) = let a' = f a x in a' `seq` foldl' f a' xs
+
 -- -----------------------------------------------------------------------------
 -- List sum and product