Drop System.Mem.Weak's dependency on Prelude
[ghc-base.git] / System / Mem / Weak.hs
index 5790105..61dce1d 100644 (file)
@@ -67,15 +67,16 @@ module System.Mem.Weak (
        -- $precise
    ) where
 
-import Prelude
-
-import Data.Typeable
+import Data.Maybe (Maybe(..))
 
 #ifdef __HUGS__
 import Hugs.Weak
+import Prelude
 #endif
 
 #ifdef __GLASGOW_HASKELL__
+import GHC.Base (return)
+import GHC.Types (IO)
 import GHC.Weak
 #endif
 
@@ -102,11 +103,11 @@ mkWeakPtr key finalizer = mkWeak key key finalizer
   finalizer to run earlier than you intended.  The same motivation
   justifies the existence of
   'Control.Concurrent.MVar.addMVarFinalizer' and
-  'Data.IORef.mkWeakIORef' (the non-unformity is accidental).
+  'Data.IORef.mkWeakIORef' (the non-uniformity is accidental).
 -}
 addFinalizer :: key -> IO () -> IO ()
 addFinalizer key finalizer = do
-   mkWeakPtr key (Just finalizer)      -- throw it away
+   _ <- mkWeakPtr key (Just finalizer) -- throw it away
    return ()
 
 -- | A specialised version of 'mkWeak' where the value is actually a pair
@@ -119,8 +120,6 @@ addFinalizer key finalizer = do
 mkWeakPair :: k -> v -> Maybe (IO ()) -> IO (Weak (k,v))
 mkWeakPair key val finalizer = mkWeak key (key,val) finalizer
 
-#include "Typeable.h"
-INSTANCE_TYPEABLE1(Weak,weakTc,"Weak")
 
 {- $precise