engine :: Double -> Signal TickRate ([Input], State) -> Signal TickRate ([Output], State)
engine dt = fmap (\(inputs, state) -> runUpdate (mapM_ update inputs) state)
        >>> fmap (second (tick dt))
engine :: Double -> Signal TickRate ([Input], State) -> Signal TickRate ([Output], State)
engine dt = fmap (\(inputs, state) -> runUpdate (mapM_ update inputs) state)
        >>> fmap (second (tick dt))
engine dt = fmap (\(inputs, state) -> runUpdate (mapM_ update inputs) state)
        >>> fmap (second (tick dt))