From cc4d138db7ea5b8bbd4767f665158fbf9bb97611 Mon Sep 17 00:00:00 2001 From: simonmar Date: Wed, 14 Jul 1999 08:37:58 +0000 Subject: [PATCH] [project @ 1999-07-14 08:37:57 by simonmar] USE_REPORT_PRELUDE patches from Wolfram Kahl. --- ghc/lib/std/PrelList.lhs | 14 ++++++++++---- ghc/lib/std/PrelNumExtra.lhs | 4 ++++ ghc/lib/std/PrelShow.lhs | 6 +++++- ghc/lib/std/Prelude.lhs | 5 ++++- 4 files changed, 23 insertions(+), 6 deletions(-) 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 diff --git a/ghc/lib/std/PrelNumExtra.lhs b/ghc/lib/std/PrelNumExtra.lhs index b6a76eb..9e870c0 100644 --- a/ghc/lib/std/PrelNumExtra.lhs +++ b/ghc/lib/std/PrelNumExtra.lhs @@ -569,7 +569,11 @@ prR n r e0 s@(h:t) = show ((round (r * 10^n))::Integer) e = e0+1 +#ifdef USE_REPORT_PRELUDE + takeN n ls rs = take n ls ++ rs +#else takeN (I# n#) ls rs = takeUInt_append n# ls rs +#endif drop0 :: String -> String -> String drop0 [] rs = rs diff --git a/ghc/lib/std/PrelShow.lhs b/ghc/lib/std/PrelShow.lhs index b9ee623..42c6250 100644 --- a/ghc/lib/std/PrelShow.lhs +++ b/ghc/lib/std/PrelShow.lhs @@ -32,7 +32,11 @@ module PrelShow import {-# SOURCE #-} PrelErr ( error ) import PrelBase import PrelMaybe -import PrelList ( (!!), break, dropWhile ) +import PrelList ( (!!), break, dropWhile +#ifdef USE_REPORT_PRELUDE + , concatMap, foldr1 +#endif + ) \end{code} diff --git a/ghc/lib/std/Prelude.lhs b/ghc/lib/std/Prelude.lhs index cf2fb00..401e5ca 100644 --- a/ghc/lib/std/Prelude.lhs +++ b/ghc/lib/std/Prelude.lhs @@ -68,7 +68,10 @@ module Prelude ( ) where import PrelBase -import PrelList hiding ( takeUInt_append ) +import PrelList +#ifndef USE_REPORT_PRELUDE + hiding ( takeUInt_append ) +#endif import PrelRead import PrelEnum import PrelNum -- 1.7.10.4