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