1. Compilar
Cargar el siguiente programa en un entorno Haskell> module Main(main) where
> f (x,y) = if x == 'a' then True
> else y
> g :: Int -> Int
> g x = 2 * x + 1
> reaplica f x = f (f x)
> h :: (Float,Float) -> Float
> h (x,y) = if x < 5.5 then x + 1
> else y
> suma1 [] = []
> suma1 (x:r) = (x + 1): suma1 r
> main = do putStrLn "Introduce tu nombre"
> cad <- getLine
> putStrLn ("Nombre al reves: " ++ reverse cad)
2. Tipo
Indicar cuál es el tipo de la funciónf y comprobar que
coincide con el tipo inferido por el sistema
3. reaplica
Evaluar el resultado de la expresiónreaplica g 34. evaluaError
Evaluar el resultado de la expresiónh (6, 1/0)5. evaluaSinError
Evaluar el resultado de la expresiónh (4, 1/0)6. suma2
Construir una función similar a la funciónsuma1 pero que
sume 2 a todos los elementos de una lista
7. por2
Construir una función similar a la funciónsuma1 pero que
multiplique por 2 todos los elementos de una lista
8. longs
Construir una función que toma una lista de palabras y devuelva una lista de enteros correspondientes a la longitud de cada palabra. Puede utilizarse la función predefinidalength que calcula
la longitud de una lista.
> longs :: [String] -> [Int]
?-longs ["juan","ana","pedro"][4,3,5]
9. aplica
Construir una función que tome como argumento una función y una lista y devuelva la lista resultante de aplicar la función a cada elemento de la lista.> aplica :: (a -> b) -> [a] -> [b]
?- aplica (\x -> x * 5) [2,3,4] [10,15,20]
10. Reescribir (Opcional)
Reescribir las funcionessuma1,suma2, por2 y longs
utilizando la función aplica11. Mayusculas (Opcional)
Modificar el programa para que imprima el nombre en mayúsculas. Puede utilizarse la funcióntoUpper :: Char -> Char que convierte
un carácter en mayúsculas.