X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=GHC%2FList.lhs;h=02119655722cd3b329beda5826e2fdf42d1578d8;hb=28fb12f4e4059674e9396fc76a2783e0ae8798cd;hp=d431070eb68a62960584e46fe63df0e5d360c60d;hpb=69daab60bb6f89433a0394182481d721dc2f42fd;p=ghc-base.git diff --git a/GHC/List.lhs b/GHC/List.lhs index d431070..0211965 100644 --- a/GHC/List.lhs +++ b/GHC/List.lhs @@ -1,5 +1,5 @@ \begin{code} -{-# OPTIONS -fno-implicit-prelude #-} +{-# OPTIONS_GHC -fno-implicit-prelude #-} ----------------------------------------------------------------------------- -- | -- Module : GHC.List @@ -19,21 +19,19 @@ module GHC.List ( map, (++), filter, concat, head, last, tail, init, null, length, (!!), - foldl, foldl1, scanl, scanl1, foldr, foldr1, scanr, scanr1, + foldl, scanl, scanl1, foldr, foldr1, scanr, scanr1, iterate, repeat, replicate, cycle, take, drop, splitAt, takeWhile, dropWhile, span, break, reverse, and, or, any, all, elem, notElem, lookup, - maximum, minimum, concatMap, + concatMap, zip, zip3, zipWith, zipWith3, unzip, unzip3, -#ifdef USE_REPORT_PRELUDE - -#else + errorEmptyList, +#ifndef USE_REPORT_PRELUDE -- non-standard, but hidden when creating the Prelude -- export list. takeUInt_append - #endif ) where @@ -168,13 +166,6 @@ foldl f z xs = lgo z xs lgo z [] = z lgo z (x:xs) = lgo (f z x) xs --- | 'foldl1' is a variant of 'foldl' that has no starting value argument, --- and thus must be applied to non-empty lists. - -foldl1 :: (a -> a -> a) -> [a] -> a -foldl1 f (x:xs) = foldl f x xs -foldl1 _ [] = errorEmptyList "foldl1" - -- | 'scanl' is similar to 'foldl', but returns a list of successive -- reduced values from the left: -- @@ -350,7 +341,7 @@ take_unsafe_UInt_append m ls rs = (x:xs) -> x : take_unsafe_UInt_append (m -# 1#) xs rs drop (I# n#) ls - | n# <# 0# = [] + | n# <# 0# = ls | otherwise = drop# n# ls where drop# :: Int# -> [a] -> [a] @@ -478,25 +469,6 @@ lookup key ((x,y):xys) | key == x = Just y | otherwise = lookup key xys -{-# SPECIALISE maximum :: [Int] -> Int #-} -{-# SPECIALISE minimum :: [Int] -> Int #-} - --- | 'maximum' returns the maximum value from a list, --- which must be non-empty, finite, and of an ordered type. --- It is a special case of 'Data.List.maximumBy', which allows the --- programmer to supply their own comparison function. -maximum :: (Ord a) => [a] -> a -maximum [] = errorEmptyList "maximum" -maximum xs = foldl1 max xs - --- | 'minimum' returns the minimum value from a list, --- which must be non-empty, finite, and of an ordered type. --- It is a special case of 'Data.List.minimumBy', which allows the --- programmer to supply their own comparison function. -minimum :: (Ord a) => [a] -> a -minimum [] = errorEmptyList "minimum" -minimum xs = foldl1 min xs - -- | Map a function over a list and concatenate the results. concatMap :: (a -> [b]) -> [a] -> [b] concatMap f = foldr ((++) . f) []