Stop using "Int" for microsecond delays in "base"
Henning Thielemann
schlepptop at henning-thielemann.de
Sat Mar 26 20:16:16 CET 2011
Paul Johnson schrieb:
> The "base" library has the "threadDelay" primitive, which takes an Int
> argument in microseconds. Unfortunately this means that the longest
> delay you can get on a 32 bit machine with GHC is just under 36 minutes
> (2^31 uSec), and a hypothetical compiler that only used 30 bit integers
> (as per the standard) would get under 10 minutes. It is a bit tricky to
> write general-purpose libraries with this.
Isn't it just a
waitLong :: Integer -> IO ()
waitLong n =
let stdDelay = 10^7
(q,r) = divMod n stdDelay
in replicateM_ (fromInteger q) (threadDelay (fromInteger stdDelay))
>> threadDelay (fromInteger r)
More information about the Libraries
mailing list