helm-1.0.0: src/Helm/Sub.hs
-- | Contains the subscription type and related utilities.
module Helm.Sub
(
-- * Types
Sub(..)
-- * Utilities
, batch
, none
) where
import Helm.Engine (Engine, Sub(..))
-- | Combine a list of subscriptions into a single one.
-- This is allows for subscriptions to multiple input events to be
-- combined into one subscription that encompasses all the actions
-- mapped from events.
batch
:: Engine e
=> [Sub e a] -- ^ The list of subscriptions.
-> Sub e a -- ^ The subscriptions accumulated.
batch subs = Sub $ do
signals <- mapM (\(Sub gen) -> gen) subs
return $ do
lists <- sequence signals
return $ concat lists
-- | A subscription that does nothing. If user input events
-- aren't required for a game, return this in the subscriptions function
-- of the game.
none :: Engine e => Sub e a
none = Sub . return $ return []