run :: App
run = do
    win <- asks envWindow

    update
    draw

    liftIO $ do
        G.swapBuffers win
        G.pollEvents

    q <- liftIO $ G.windowShouldClose win
    unless q run
run :: App
run = do
    win <- asks envWindow

    update
    draw

    liftIO $ do
        G.swapBuffers win
        G.pollEvents

    q <- liftIO $ G.windowShouldClose win
    unless q run
run = do
    win <- asks envWindow

    update
    draw

    liftIO $ do
        G.swapBuffers win
        G.pollEvents

    q <- liftIO $ G.windowShouldClose win
    unless q run