-- | -- Module : Control.TimeWarp.Timed -- Copyright : (c) Serokell, 2016 -- License : GPL-3 (see the file LICENSE) -- Maintainer : Serokell <hi@serokell.io> -- Stability : experimental -- Portability : POSIX, GHC -- -- This module provides time- and thread-management capabilities. -- It allows to write scenarios over multithreaded systems, which can -- then be launched as either real program or emulation with no need -- to wait for delays. -- -- Example: -- -- @ -- example :: MonadTimed m => m () -- example = do -- schedule (at 10 minute) $ do -- time <- toMicroseconds \<\$\> virtualTime -- liftIO $ putStrLn $ \"Hello! It's \" ++ show time ++ " now" -- wait (for 9 minute) -- liftIO $ putStrLn \"One more minute...\" -- @ -- -- Such scenario can be launched in real mode using -- -- >>> runTimedIO example -- <9 minutes passed> -- One more minute... -- <1 more minute passed> -- Hello! It's 600000000µs now -- -- and like emulation via -- -- >>> runTimedT example -- One more minute... -- Hello! It's 600000000µs now -- -- which works on the spot. module Control.TimeWarp.Timed ( module Control.TimeWarp.Timed.MonadTimed , module Control.TimeWarp.Timed.TimedIO , module Control.TimeWarp.Timed.TimedT , module Control.TimeWarp.Timed.Misc ) where import Control.TimeWarp.Timed.Misc import Control.TimeWarp.Timed.MonadTimed import Control.TimeWarp.Timed.TimedIO import Control.TimeWarp.Timed.TimedT