[clean up libraries some. strictify many fields in the standard libraries (slightly non-conformant)
John Meacham <john@repetae.net>**20061218221627] hunk ./lib/base/Jhc/Addr.hs 8
+    ptrFromAddr__,
hunk ./lib/base/Jhc/Addr.hs 20
+import Jhc.Prim
hunk ./lib/base/Jhc/Addr.hs 48
+foreign import primitive "box" boxAddr :: Addr__ -> Addr
+
+ptrFromAddr__ :: Addr__ -> Ptr a
+ptrFromAddr__ addr = Ptr (boxAddr addr)
hunk ./lib/base/Jhc/Handle.hs 1
-{-# OPTIONS_JHC -fffi #-}
+{-# OPTIONS_JHC -fffi -funboxed-values #-}
hunk ./lib/base/Jhc/Handle.hs 18
+import Jhc.Addr
hunk ./lib/base/Jhc/Handle.hs 83
-toStr ReadMode = read_str
-toStr WriteMode = write_str
-toStr AppendMode = append_str
-toStr ReadWriteMode = readwrite_str
-
-foreign import primitive "const.\"r\"" read_str :: Ptr CChar
-foreign import primitive "const.\"w\"" write_str  :: Ptr CChar
-foreign import primitive "const.\"a\"" append_str  :: Ptr CChar
-foreign import primitive "const.\"r+\"" readwrite_str  :: Ptr CChar
+toStr ReadMode = ptrFromAddr__ "r"#
+toStr WriteMode = ptrFromAddr__ "w"#
+toStr AppendMode = ptrFromAddr__ "a"#
+toStr ReadWriteMode = ptrFromAddr__ "r+"#
hunk ./lib/base/Prelude/IO.hs 1
-{-# OPTIONS_JHC -fffi #-}
+{-# OPTIONS_JHC -fffi -funboxed-values #-}
hunk ./lib/base/Prelude/IO.hs 13
+import Jhc.Addr
hunk ./lib/base/Prelude/IO.hs 57
-    file <- withCString fn $ \fnc -> c_fopen fnc read_str
+    file <- withCString fn $ \fnc -> c_fopen fnc (ptrFromAddr__ "r"#)
hunk ./lib/base/Prelude/IO.hs 121
-foreign import primitive "const.\"r\"" read_str :: Ptr CChar
-
hunk ./lib/base/Prelude/IO.hs 124
-foreign import ccall "stdio.h putwchar" c_putwchar :: CWchar -> IO ()
-foreign import ccall "wchar.h getwchar" c_getwchar :: IO CWint
+foreign import ccall "stdio.h putwchar_unlocked" c_putwchar :: CWchar -> IO ()
+foreign import ccall "wchar.h getwchar_unlocked" c_getwchar :: IO CWint
hunk ./lib/base/Prelude/IO.hs 127
-foreign import primitive "const.WEOF" c_WEOF :: CWint
hunk ./lib/base/Prelude.hs 546
+{-# RULES "elem/[]" forall c . elem c [] = False #-}
+{-# RULES "elem/[_]" forall c v . elem c [v] = c == v #-}
+
hunk ./lib/base/Prelude.hs 552
+{-# RULES "notElem/[]" forall c . notElem c [] = True #-}
+{-# RULES "notElem/[_]" forall c v . notElem c [v] = c /= v #-}
+
hunk ./lib/base/Prelude.hs 683
+{-# RULES "++/tick1"      forall x xs . [x] ++ xs = x:xs #-}
+{-# RULES "++/tick2"      forall x y xs . [x,y] ++ xs = x:y:xs #-}
+{-# RULES "++/tick3"      forall x y z xs . [x,y,z] ++ xs = x:y:z:xs #-}
hunk ./lib/base/System/Random.hs 43
-data StdGen = StdGen Int Int
+data StdGen = StdGen !Int !Int
hunk ./lib/base/System/Time.hs 25
-data ClockTime = TOD Integer Integer -- Implementation-dependent
+data ClockTime = TOD !Integer !Integer -- Implementation-dependent
hunk ./lib/base/System/Time.hs 68
-    ctYear   :: Int,
-    ctMonth  :: Month,
-    ctDay, ctHour, ctMin, ctSec  :: Int,
-    ctPicosec :: Integer,
-    ctWDay    :: Day,
-    ctYDay       :: Int,
-    ctTZName   :: String,
-    ctTZ          :: Int,
-    ctIsDST :: Bool
+    ctYear       :: !Int,
+    ctMonth      :: !Month,
+    ctDay, ctHour, ctMin, ctSec  :: !Int,
+    ctPicosec    :: !Integer,
+    ctWDay       :: !Day,
+    ctYDay       :: !Int,
+    ctTZName     :: String,
+    ctTZ         :: !Int,
+    ctIsDST      :: !Bool
hunk ./lib/base/System/Time.hs 80
-    tdYear, tdMonth, tdDay, tdHour, tdMin, tdSec :: Int,
-    tdPicosec      :: Integer
+    tdYear, tdMonth, tdDay, tdHour, tdMin, tdSec :: !Int,
+    tdPicosec      :: !Integer
hunk ./lib/base/System.hs 15
-data ExitCode = ExitSuccess | ExitFailure Int
+data ExitCode = ExitSuccess | ExitFailure !Int