
Test.ChasingBottoms.TimeOut  Portability  nonportable (preemptive scheduling)  Stability  experimental  Maintainer  http://www.cs.chalmers.se/~nad/ 



Description 
When dealing with "hard bottoms", i.e. nonterminating
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 


Constructors   Instances  



timeOut n c runs c for at most n seconds (modulo
scheduling issues).
 If the computation terminates before that, then
Value v is returned, where v is the resulting value. Note
that this value may be equal to bottom, e.g. if c = return
Test.ChasingBottoms.IsBottom.bottom.
 If the computation does not terminate, then NonTermination is
returned.
 If the computation raises an exception, then Exception e is
returned, where e is the exception.



timeOut' is a variant which can be used for pure
computations. The definition,
timeOut' n = timeOut n . evaluate
ensures that timeOut' 1 Test.ChasingBottoms.IsBottom.bottom
usually returns Exception <something>. (timeOut 1 (return
Test.ChasingBottoms.IsBottom.bottom) usually returns Value
Test.ChasingBottoms.IsBottom.bottom; in other words, the
computation reaches whnf almost immediately, defeating the purpose
of the timeout.)



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' is the equivalent variant of timeOutMicro:
timeOutMicro' n = timeOutMicro n . evaluate


Produced by Haddock version 2.4.2 