upper :: String -> String upper str = str ++ "\n" ++ map toUpper str upper' str = unlines (zipWith join ls (map (map toUpper) ls)) where ls = lines str join xs ys = xs ++ "\n" ++ ys