Skip to content

Instantly share code, notes, and snippets.

@aardvarrk
Created November 29, 2012 20:31
Show Gist options
  • Select an option

  • Save aardvarrk/4171711 to your computer and use it in GitHub Desktop.

Select an option

Save aardvarrk/4171711 to your computer and use it in GitHub Desktop.
class FunctorIO f where
fmapIO :: f a -> IO (f b)
data Input = Input Time Random Keyboard Mouse Joystick
data State = State {shizzle}
data Output = Output
data Game a = Game State a
instance FunctorIO Game where
fmapIO :: Game (Maybe Input) -> IO (Game Output)
fmapIO (Game state input) = do
newState <- updateGame state input
return $ Game newState Output
main :: IO ()
main = loop $ Game initialState Nothing
where
loop (Game state _) = do
maybeInput <- getInput
newGame <- fmapIO $ Game state maybeInput
loop newGame
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment