| ||||||||||||||
| ||||||||||||||
Description | ||||||||||||||
When dealing with "hard bottoms", i.e. non-terminating computations that do not result in exceptions, the following functions may be handy. Note that a computation is considered to have terminated when it has reached weak head normal form (i.e. something distinct from bottom). | ||||||||||||||
Synopsis | ||||||||||||||
| ||||||||||||||
Documentation | ||||||||||||||
data Result a | ||||||||||||||
| ||||||||||||||
timeOut :: Int -> IO a -> IO (Result a) | ||||||||||||||
timeOut n c runs c for at most n seconds (modulo scheduling issues).
| ||||||||||||||
timeOut' :: Int -> a -> IO (Result a) | ||||||||||||||
timeOut' is a variant which can be used for pure computations. The definition, timeOut' n = timeOut n . evaluate ensures that timeOut' 1 bottom usually returns Exception <something>. (timeOut 1 (return bottom) usually returns Value bottom; in other words, the computation reaches whnf almost immediately, defeating the purpose of the time-out.) | ||||||||||||||
timeOutMicro :: Int -> IO a -> IO (Result a) | ||||||||||||||
timeOutMicro takes a delay in microseconds. Note that the resolution is not necessarily very high (the last time I checked it was 0.02 seconds when using the standard runtime system settings for GHC). | ||||||||||||||
timeOutMicro' :: Int -> a -> IO (Result a) | ||||||||||||||
timeOutMicro' is the equivalent variant of timeOutMicro: timeOutMicro' n = timeOutMicro n . evaluate | ||||||||||||||
Produced by Haddock version 0.7 |