log :: MVar () -> String -> IO ()
log lock text =
    withMVar lock $
    \_ ->
         putStrLn text
log :: MVar () -> String -> IO ()
log lock text =
    withMVar lock $
    \_ ->
         putStrLn text
log lock text =
    withMVar lock $
    \_ ->
         putStrLn text