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!