module EventLoop.Main(start) where
import EventLoop.EventProcessor
import EventLoop.Input.InputEvent
import EventLoop.Output.OutputEvent
import EventLoop.Json
start :: (a -> InputEvent -> ([OutputEvent], a)) -> a -> IO()
start handler beginstate = eventloop handler' beginstate
where
handler' = changeTypes handler
changeTypes :: (a -> InputEvent -> ([OutputEvent], a)) -> a -> IOMessage -> ([IOMessage], a)
changeTypes f state message = (map toJsonMessage oEvents, state')
where
iEvent = fromJsonMessage message
(oEvents, state') = f state iEvent