trace :: (MonadIO m) => String -> m ()
trace msg = liftIO $ do
  t <- getCurrentTime
  putStrLn $ "[" ++ formatTime defaultTimeLocale "%F %T.%q %z" t ++ "] " ++ msg
trace :: (MonadIO m) => String -> m ()
trace msg = liftIO $ do
  t <- getCurrentTime
  putStrLn $ "[" ++ formatTime defaultTimeLocale "%F %T.%q %z" t ++ "] " ++ msg
trace msg = liftIO $ do
  t <- getCurrentTime
  putStrLn $ "[" ++ formatTime defaultTimeLocale "%F %T.%q %z" t ++ "] " ++ msg