[reorganize library some, add Jhc.Prim for some very low level stuff
John Meacham <john@repetae.net>**20061104031205] hunk ./E/FromHs.hs 189
+            runRaw       = func_runRaw ds
hunk ./Name/Names.hs 78
-tc_World__ = toName TypeConstructor ("Jhc.IO","World__")
+tc_World__ = toName TypeConstructor ("Jhc.Prim","World__")
hunk ./Name/Names.hs 133
+    func_runRaw = toName Val ("Jhc.Prim","runRaw"),
hunk ./Name/VConsts.hs 87
+    func_runRaw :: a,
hunk ./lib/base/Jhc/IO.hs 22
+import Jhc.Prim
hunk ./lib/base/Jhc/IO.hs 26
--- this is treated very specially by the compiler. it is unboxed.
-data World__
hunk ./lib/base/Jhc/IO.hs 99
--- throws away first argument. but causes second argument to artificially depend on it.
-foreign import primitive drop__ :: forall a b. a -> b -> b
-
--- like 'const' but creates an artificial dependency on its second argument to guide optimization.
-dependingOn :: b -> a -> b
-dependingOn = flip drop__
hunk ./lib/base/Jhc/IO.hs 121
-runExpr x w = runMain (print x) w
+runExpr x w = runNoWrapper (print x) w
+
addfile ./lib/base/Jhc/Prim.hs
hunk ./lib/base/Jhc/Prim.hs 1
+{-# OPTIONS_JHC -N #-}
+module Jhc.Prim(
+    World__(),
+    runRaw,
+    unsafeCoerce__,
+    dependingOn
+    ) where
+
+
+-- | this is treated very specially by the compiler. it is unboxed.
+data World__
+
+-- | this is wrapped around arbitrary expressions and just evaluates them to whnf
+runRaw :: a -> World__ -> World__
+runRaw x w = x `seq` w
+
+foreign import primitive seq :: a -> b -> b
+foreign import primitive "unsafeCoerce" unsafeCoerce__ :: a -> b
+
+-- throws away first argument. but causes second argument to artificially depend on it.
+foreign import primitive drop__ :: forall a b. a -> b -> b
+
+-- like 'const' but creates an artificial dependency on its second argument to guide optimization.
+dependingOn :: b -> a -> b
+dependingOn a b = drop__ b a