content: import Data.List (inits, tail, tails)
  
  wWrap :: Int -> String -> String
  wWrap n =
    unlines
      . map unwords
      . wWrap'' n
      . words
      . concat
      . lines
  
  wWrap'' :: Int -> [String] -> [[String]]
  wWrap'' _ [] = []
  wWrap'' n ss =
    (\(a, b) -> a : wWrap'' n b) $
      last . filter ((<= n) . length . unwords . fst) $
        zip (inits ss) (tails ss)
  
  
  main :: IO ()
  main =
    putStrLn $
      wWrap 80 $
        concat
          [ "In olden times when wishing still helped one,",
            " there lived a king whose daughters were all",
            " beautiful, but the youngest was so beautiful",
            " that the sun itself, which has seen so much,",
            " was astonished whenever, it shone in her",
            " face.  Close by the king's castle lay a great",
            " dark forest, and under an old lime-tree in",
            " the forest was a well, and when the day was",
            " very warm, the king's child went out into the",
            " forest and sat down by the side of the cool",
            " fountain, and when she was bored she took a",
            " golden ball, and threw it up on high and",
            " caught it, and this ball was her favorite",
            " plaything."
          ]
  