Reverse length string sorter

🧩 Syntax:
-- Reads a set of strings separated by newlines from stdin, sorts them
-- by length in descending order, writes them to stdout.
 
import Data.List
 
listItemsToTuplesWithLength :: [String] -> [(Int, String)]
listItemsToTuplesWithLength = map (\x -> (length x, x))
 
main :: IO ()
main = do
  input <- getContents
  mapM_
    (putStrLn . snd)
    (sortBy (flip compare) (listItemsToTuplesWithLength $ lines input))