{- - ``Control/Monad/Event/Classes'' - (c) 2008 Cook, J. MR SSD, Inc. -} {-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, KindSignatures #-} module Control.Monad.Event.Classes where import Control.Monad.Event.Internal.EventID class MonadTime (m :: * -> *) t | m -> t class MonadEvent (m :: * -> *) e | e -> m class (MonadEvent m e, MonadTime m t) => ScheduleEvent m t e | m -> t, e -> m where scheduleEventIn :: t -> e -> m EventID doNext :: e -> m ()