[project @ 2002-10-18 13:32:56 by simonpj]
authorsimonpj <unknown>
Fri, 18 Oct 2002 13:32:57 +0000 (13:32 +0000)
committersimonpj <unknown>
Fri, 18 Oct 2002 13:32:57 +0000 (13:32 +0000)
Move Typable IORef instance to Dynamic; stops IORef.hs being an oprhan module

Data/Dynamic.hs
Data/IORef.hs

index 275e318..c67ea20 100644 (file)
@@ -370,3 +370,8 @@ INSTANCE_TYPEABLE0(Word64,word64Tc,"Word64")
 INSTANCE_TYPEABLE0(TyCon,tyconTc,"TyCon")
 INSTANCE_TYPEABLE0(TypeRep,typeRepTc,"TypeRep")
 INSTANCE_TYPEABLE0(Dynamic,dynamicTc,"Dynamic")
+
+#ifndef __NHC__
+#include "Dynamic.h"
+INSTANCE_TYPEABLE1(IORef,ioRefTc,"IORef")
+#endif
index 527e20a..af8ebda 100644 (file)
@@ -66,6 +66,7 @@ mkWeakIORef r@(IORef (STRef r#)) f = IO $ \s ->
 modifyIORef :: IORef a -> (a -> a) -> IO ()
 modifyIORef ref f = writeIORef ref . f =<< readIORef ref
 
+
 -- |Atomically modifies the contents of an 'IORef'.
 --
 -- This function is useful for using 'IORef' in a safe way in a multithreaded
@@ -79,14 +80,10 @@ modifyIORef ref f = writeIORef ref . f =<< readIORef ref
 atomicModifyIORef :: IORef a -> (a -> (a,b)) -> IO b
 #if defined(__GLASGOW_HASKELL__)
 atomicModifyIORef (IORef (STRef r#)) f = IO $ \s -> atomicModifyMutVar# r# f s
+
 #elif defined(__HUGS__)
 atomicModifyIORef = plainModifyIORef   -- Hugs has no preemption
   where plainModifyIORef r f = do
                a <- readIORef r
                case f a of (a',b) -> writeIORef r a' >> return b
 #endif
-
-#ifndef __NHC__
-#include "Dynamic.h"
-INSTANCE_TYPEABLE1(IORef,ioRefTc,"IORef")
-#endif