Definir el procedimiento
subraya :: String -> Char -> IO () |
subraya :: String -> Char -> IO ()
tal que (subraya cs c) escribe la cadena cs y debajo otra subrayando las ocurrencias de c. Por ejemplo,
λ> subraya "Salamanca es castellana" 'a'
Salamanca es castellana
^ ^ ^ ^ ^ ^ ^
λ> subraya "Salamanca es castellana" 'n'
Salamanca es castellana
^ ^
λ> subraya "Salamanca es castellana" ' '
Salamanca es castellana
^ ^ |
λ> subraya "Salamanca es castellana" 'a'
Salamanca es castellana
^ ^ ^ ^ ^ ^ ^
λ> subraya "Salamanca es castellana" 'n'
Salamanca es castellana
^ ^
λ> subraya "Salamanca es castellana" ' '
Salamanca es castellana
^ ^
Soluciones
-- 1ª definición
subraya :: String -> Char -> IO ()
subraya cs c = do
putStrLn cs
putStrLn (subrayado cs c)
subrayado :: String -> Char -> String
subrayado cs c = map procesa cs
where procesa x | x == c = '^'
| otherwise = ' '
-- 2ª definición
subraya2 :: String -> Char -> IO ()
subraya2 cs c =
mapM_ putStrLn [cs, subrayado cs c] |
-- 1ª definición
subraya :: String -> Char -> IO ()
subraya cs c = do
putStrLn cs
putStrLn (subrayado cs c)
subrayado :: String -> Char -> String
subrayado cs c = map procesa cs
where procesa x | x == c = '^'
| otherwise = ' '
-- 2ª definición
subraya2 :: String -> Char -> IO ()
subraya2 cs c =
mapM_ putStrLn [cs, subrayado cs c]