+#else /* ! __GLASGOW_HASKELL__ */
+newtype FastMutInt = FastMutInt (IORef Int)
+
+-- If any default value was chosen, it surely would be 0,
+-- so we will use that since IORef requires a default value.
+-- Or maybe it would be more interesting to package an error,
+-- assuming nothing relies on being able to read a bogus Int?
+-- That could interfere with its strictness for smart optimizers
+-- (are they allowed to optimize a 'newtype' that way?) ...
+-- Well, maybe that can be added (in DEBUG?) later.
+newFastMutInt = fmap FastMutInt (newIORef 0)
+
+readFastMutInt (FastMutInt ioRefInt) = readIORef ioRefInt
+
+-- FastMutInt is strict in the value it contains.
+writeFastMutInt (FastMutInt ioRefInt) i = i `seq` writeIORef ioRefInt i