From 3632b8d45fb803e9b548962b9aca449c74572060 Mon Sep 17 00:00:00 2001
From: sof <unknown>
Date: Wed, 3 Feb 1999 20:26:26 +0000
Subject: [PATCH] [project @ 1999-02-03 20:26:26 by sof] Drop uneccessary uses
 of lit-lits and primops

---
 ghc/lib/misc/CString.lhs | 27 +++++++++------------------
 1 file changed, 9 insertions(+), 18 deletions(-)

diff --git a/ghc/lib/misc/CString.lhs b/ghc/lib/misc/CString.lhs
index 83712be70431..ca6dea6b7969 100644
--- a/ghc/lib/misc/CString.lhs
+++ b/ghc/lib/misc/CString.lhs
@@ -55,6 +55,7 @@ import PrelPack
 import GlaExts
 import Addr
 import PrelIOBase ( IO(..) )
+import MutableArray
 
 \end{code}
 
@@ -66,7 +67,7 @@ packStringIO str = stToIO (packStringST str)
 \begin{code}
 unpackCStringIO :: Addr -> IO String
 unpackCStringIO addr
- | addr == ``NULL'' = return ""
+ | addr == nullAddr = return ""
  | otherwise        = unpack 0#
   where
     unpack nh = do
@@ -119,8 +120,8 @@ Turn a NULL-terminated vector of null-terminated strings into a string list
 \begin{code}
 unvectorize :: Addr -> Int -> IO [String]
 unvectorize ptr n
-  | str == ``NULL'' = return []
-  | otherwise = do
+  | str == nullAddr = return []
+  | otherwise       = do
 	x  <- unpackCStringIO str
 	xs <- unvectorize ptr (n+1)
 	return (x : xs)
@@ -145,10 +146,9 @@ vectorize vs = do
     fill :: MutableByteArray RealWorld Int -> Int -> [String] -> IO ()
     fill arr n [] =
 	_casm_ ``((PP_)%0)[%1] = NULL;'' arr n
-    fill arr n (x:xs) =
-	packStringIO x			    >>= \ barr ->
+    fill arr n (x:xs) = do
+	barr <- packStringIO x
         _casm_ ``((PP_)%0)[%1] = (P_)%2;'' arr n barr
-					    >>= \ () ->
 	fill arr (n+1) xs
 
 \end{code}
@@ -159,23 +159,14 @@ out the bounds - use with care.
 \begin{code}
 -- Allocate a mutable array of characters with no indices.
 allocChars :: Int -> IO (MutableByteArray RealWorld Int)
-allocChars (I# size#) = IO $ \ s# ->
-    case newCharArray# size# s# of
-      (# s2#, barr# #) ->
-	(# s2#, (MutableByteArray (I# 1#, I# size#) barr#) #)
+allocChars size = stToIO (newCharArray (0,size))
 
 allocWords :: Int -> IO (MutableByteArray RealWorld Int)
-allocWords (I# size#) = IO $ \ s# ->
-    case newIntArray# size# s# of
-      (# s2#, barr# #) ->
-	(# s2#, (MutableByteArray (I# 1#, I# size#) barr#) #)
+allocWords size = stToIO (newIntArray (0,size))
 
 -- Freeze these index-free mutable arrays
 freeze :: MutableByteArray RealWorld Int -> IO (ByteArray Int)
-freeze (MutableByteArray ixs arr#) = IO $ \ s# ->
-    case unsafeFreezeByteArray# arr# s# of
-      (# s2#, frozen# #) ->
-	(# s2#, (ByteArray ixs frozen#) #)
+freeze mb = stToIO (unsafeFreezeByteArray mb)
 
 -- Copy a null-terminated string from outside the heap to
 -- Haskellized nonsense inside the heap
-- 
GitLab