import Data.Char (isUpper,isLower) import Data.List (sortBy) import Data.Ord (comparing) isTitle [] = False isTitle (x:xs) = isUpper x && all isLower xs main = do putStrLn "The name of the input file:" file <- getLine inputString <- readFile file let allTitles= (reverse . sortBy (comparing length) . filter isTitle) ( words inputString ) putStrLn ( show ( take 15 allTitles ) ) putStrLn ( show (length allTitles) ++ " titles in " ++ file )