greet :: Opts -> IO ()
greet (Opts files quiet fast) = do
  putStrLn "reading these files:"
  mapM_ print files

  case fast of
    Fast -> putStrLn "quickly"
    Slow -> putStrLn "slowly"

  case quiet of
    True  -> putStrLn "quietly"
    False -> putStrLn "loudly"
greet :: Opts -> IO ()
greet (Opts files quiet fast) = do
  putStrLn "reading these files:"
  mapM_ print files

  case fast of
    Fast -> putStrLn "quickly"
    Slow -> putStrLn "slowly"

  case quiet of
    True  -> putStrLn "quietly"
    False -> putStrLn "loudly"
greet (Opts files quiet fast) = do
  putStrLn "reading these files:"
  mapM_ print files

  case fast of
    Fast -> putStrLn "quickly"
    Slow -> putStrLn "slowly"

  case quiet of
    True  -> putStrLn "quietly"
    False -> putStrLn "loudly"