haskell callback timeout

Programación de un tiempo de espera en Haskell



callback timeout (1)

Simplemente ejecutaría la devolución de llamada en su propio hilo después de un retraso. Este es un GHC-ismo.

import Control.Concurrent (forkIO, threadDelay) -- | Run the callback after the given number of milliseconds. runAfterDelay :: Int -> IO () -> IO () runAfterDelay t f = forkIO (threadDelay t >> f)

Los hilos en GHC son excepcionalmente ligeros, por lo que esto no requerirá recursos de sistema de amarre.

Soy nuevo en Haskell y estoy tratando de averiguar cómo programar una devolución de llamada para ser despedida dentro de X segundos (y no antes).

En la búsqueda de Hoogle y Google, he descubierto:

http://www.haskell.org/ghc/docs/latest/html/libraries/base/GHC-Event.html

tanto como:

http://hackage.haskell.org/packages/archive/base/4.3.1.0/doc/html/System-Event.html

Ambos cuentan con una función "registerTimeout" que parece hacer lo que quiero. Sin embargo, parece que System.Event ya no está en las últimas versiones de Haskell y GHC.Event está marcado como interno.

¿Hay algún sustituto de espacio de usuario que pueda usar? Prefiero no usar las funciones de temporización destinadas a GLUT (a menos que esa sea la forma prescrita de lograr mi objetivo), y System.Timeout no parece ser lo que quiero; está destinado a poner un máximo en la cantidad de tiempo que algo puede tomar en lugar de un mínimo.

¡Gracias por su aporte!