time-out (hackage): This library provides several timer and timeout related tools:  Control.Timeout - Execution of a computation with a time limit, aborting it if the limit is reached before the computation finishes. It is more-or-less a lifted version of System.Timeout from the base package. It's good for single use, but it launches a temporary helper thread. If you want to time-limit actions continuously (e.g. if you're implementing a network protocol), you should probably use one of the other tools described below, since they use a single dedicated thread for all the timeouts.  Control.Timer - Managing a timer running in a dedicated thread. The timer waits for an amount of time you specify, and then runs an action you specify. You can stop and restart it at any time.  Control.Alarm - Managing an alarm, which is a timer whose action is to notify your thread when the specified amount of time passes.  Control.Monad.Trans.Timer - A monad transformer for managing a timer  Control.Monad.Trans.Alarm - A monad transformer for managing an alarm  Control.Monad.Trans.Timeout - A monad transformer for running actions with timeouts, useful for e.g. network protocols where any send and receive can timeout  Control.Monad.Timeout.Class - A monad typeclass for running actions with a time limit. Control.Timeout provides a simple trivial for IO (which can then be used with any MonadIO), and Control.Monad.Trans.Timeout provides a scalable instance.
Keywords: control|library|monad|public-domain|time|timeout