2016-12-29 17:27 GMT+01:00 Joey Hess <id@joeyh.name>:
[...] It would perhaps be good for the documentation for threadDelay to point
out that it can delay for a maximum of 71 minutes on 32 bit systems, and
point to the unbounded-delays package.

... or even better: Absorb the functions from unbounded-delays into base. In their current state, I would consider both threadDelay and timeout API bugs, see http://www.aristeia.com/Papers/IEEE_Software_JulAug_2004_revised.htm ("Make interfaces easy to use correctly and hard to use incorrectly."). Perhaps we should add:

   genericThreadDelay :: Integral i => i -> IO ()
  genericTimeout :: Integral i => i -> IO a -> IO (Maybe a)

to their respective modules, following Data.List's example. The *real* fix IMHO would be having the equivalent of C++'s <chrono> facilities in base, so we could use a duration data type here.