X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Flib%2Fstd%2FPrelList.lhs;h=b1a0b7cf1c7a67a6769eb87bb625e014861bb047;hb=cc4d138db7ea5b8bbd4767f665158fbf9bb97611;hp=1d32fd72b94502633bdbe55ca771095fc960bd3b;hpb=d1ab5c3837c3c2e30eee18e7c1893a6741475e17;p=ghc-hetmet.git diff --git a/ghc/lib/std/PrelList.lhs b/ghc/lib/std/PrelList.lhs index 1d32fd7..b1a0b7c 100644 --- a/ghc/lib/std/PrelList.lhs +++ b/ghc/lib/std/PrelList.lhs @@ -22,10 +22,16 @@ module PrelList ( maximum, minimum, concatMap, zip, zip3, zipWith, zipWith3, unzip, unzip3, +#ifdef USE_REPORT_PRELUDE + +#else + -- non-standard, but hidden when creating the Prelude -- export list. takeUInt_append +#endif + ) where import {-# SOURCE #-} PrelErr ( error ) @@ -241,20 +247,20 @@ dropWhile p xs@(x:xs') take :: Int -> [a] -> [a] take 0 _ = [] take _ [] = [] -take n (x:xs) | n > 0 = x : take (n-1) xs +take n (x:xs) | n > 0 = x : take (minusInt n 1) xs take _ _ = errorNegativeIdx "take" drop :: Int -> [a] -> [a] drop 0 xs = xs drop _ [] = [] -drop n (_:xs) | n > 0 = drop (n-1) xs +drop n (_:xs) | n > 0 = drop (minusInt n 1) xs drop _ _ = errorNegativeIdx "drop" splitAt :: Int -> [a] -> ([a],[a]) splitAt 0 xs = ([],xs) splitAt _ [] = ([],[]) -splitAt n (x:xs) | n > 0 = (x:xs',xs'') where (xs',xs'') = splitAt (n-1) xs +splitAt n (x:xs) | n > 0 = (x:xs',xs'') where (xs',xs'') = splitAt (minusInt n 1) xs splitAt _ _ = errorNegativeIdx "splitAt" #else /* hack away */ @@ -429,7 +435,7 @@ concat = foldr (++) [] (!!) :: [a] -> Int -> a #ifdef USE_REPORT_PRELUDE (x:_) !! 0 = x -(_:xs) !! n | n > 0 = xs !! (n-1) +(_:xs) !! n | n > 0 = xs !! (minusInt n 1) (_:_) !! _ = error "Prelude.(!!): negative index" [] !! _ = error "Prelude.(!!): index too large" #else