#ifdef __NHC__
import CPUTime ( getCPUTime )
+import Foreign.Ptr ( Ptr, nullPtr )
#else
import System.CPUTime ( getCPUTime )
import System.Time ( getClockTime, ClockTime(..) )
import Data.IORef
import Numeric ( readDec )
-#ifdef __GLASGOW_HASKELL__
-import GHC.IOBase ( stToIO )
-#endif
-
-- The standard nhc98 implementation of Time.ClockTime does not match
-- the extended one expected in this module, so we lash-up a quick
-- replacement here.
#ifdef __NHC__
data ClockTime = TOD Integer ()
-foreign import ccall "time.h time" readtime :: Int -> IO Int
+foreign import ccall "time.h time" readtime :: Ptr () -> IO Int
getClockTime :: IO ClockTime
-getClockTime = do t <- readtime 0; return (TOD (toInteger t) ())
+getClockTime = do t <- readtime nullPtr; return (TOD (toInteger t) ())
#endif
{- $intro
-The "Random" library deals with the common task of pseudo-random
+This library deals with the common task of pseudo-random
number generation. The library makes it possible to generate
repeatable results, by starting with a specified initial random
number generator; or to get different results on each run by using the
-- default mathod
genRange g = (minBound,maxBound)
-{- |The "Random" library provides one instance of 'RandomGen', the abstract data
-type 'StdGen'.
+{- |The "System.Random" library provides one instance of 'RandomGen', the
+abstract data type 'StdGen'.
The result of repeatedly using next should be at least as statistically robust
as the /Minimal Standard Random Number Generator/ described by
{- |'getStdRandom' uses the supplied function to get a value from the current
global random generator, and updates the global generator with the new generator
-returned by the function. For example, 'rollDice' gets a random integer between 1 and 6:
+returned by the function. For example, @rollDice@ gets a random integer between 1 and 6:
> rollDice :: IO Int
> rollDice = getStdRandom (randomR (1,6))