event-monad-0.0.1.0: src/Control/Monad/Event/Classes.hs-boot
{-
- ``Control/Monad/Event/Classes''
-}
{-# LANGUAGE
MultiParamTypeClasses,
FunctionalDependencies,
KindSignatures
#-}
module Control.Monad.Event.Classes where
import Control.Monad.Event.Internal.EventID
class Monad m => MonadTime m t | m -> t where
getCurrentTime :: m t
class MonadEvent (m :: * -> *) e | e -> m
class (MonadEvent m e, MonadTime m t) => ScheduleEvent m t e | m -> t
where
scheduleEventAt :: t -> e -> m EventID
doNext :: e -> m ()
doNext e = do
now <- getCurrentTime
scheduleEventAt now e
return ()