Safe Haskell | None |
---|---|
Language | Haskell98 |
- class Show e => Event e where
- type Input e :: *
- describeInput :: e -> Input e -> Maybe Text
- data Event e => Signal e
- type Handler m a = Input a -> m ()
- newSignal :: (BaseIO m, Event e) => e -> m (Signal e)
- emit :: (Event e, MonadIO m, MonadLogger m) => Signal e -> Input e -> m ()
- emit' :: (Event e, MonadIO m) => Signal e -> Input e -> m ()
- closeSignal :: (Event e, MonadIO m, MonadLogger m, MonadResource m) => Signal e -> m ()
- closeSignal' :: (Event e, MonadIO m, MonadResource m) => Signal e -> m ()
- listenTo :: (Event a, MonadIO m) => Signal a -> m (Async (Maybe (Input a)))
- addHandler :: (Event a, ControlIO m, MonadResource m) => Signal a -> Handler m a -> m ReleaseKey
- addRecursiveHandler :: (Event a, ControlIO m, MonadResource m) => Signal a -> b -> (b -> Input a -> m b) -> m ReleaseKey
- deleteHandlers :: (Event e, MonadIO m, MonadResource m) => Signal e -> m ()
Types
An event type is defined by its input type.
type Input e :: *
describeInput :: e -> Input e -> Maybe Text
A signal notifies the occurrence of an event.
Event e => Describable (Signal e) |
Signal manipulation
newSignal :: (BaseIO m, Event e) => e -> m (Signal e)
Signal
exports no constructor, use this function instead.
closeSignal :: (Event e, MonadIO m, MonadLogger m, MonadResource m) => Signal e -> m ()
Close a signal and all its attached hooks.
closeSignal' :: (Event e, MonadIO m, MonadResource m) => Signal e -> m ()
Like close
, but doesn't log anything.
listenTo :: (Event a, MonadIO m) => Signal a -> m (Async (Maybe (Input a)))
Asynchronously wait for the next event.
Handlers
addHandler :: (Event a, ControlIO m, MonadResource m) => Signal a -> Handler m a -> m ReleaseKey
Execute a function each time an event occurs.
addRecursiveHandler :: (Event a, ControlIO m, MonadResource m) => Signal a -> b -> (b -> Input a -> m b) -> m ReleaseKey
Generalized version of addHandler
where the callback function may recurse.
deleteHandlers :: (Event e, MonadIO m, MonadResource m) => Signal e -> m ()
Stop all handlers associated to the given signal.