From cc4d138db7ea5b8bbd4767f665158fbf9bb97611 Mon Sep 17 00:00:00 2001
From: simonmar <unknown>
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 1d32fd72b945..b1a0b7cf1c7a 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 b6a76eb0fb4f..9e870c0e08c0 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 b9ee6233c8bc..42c6250b4398 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 cf2fb00ed92a..401e5ca0a032 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
-- 
GitLab