Universidad Nacional de La Rioja Licenciatura en Sistemas de Información Computación II – Año 2012 Haskell - Guía de Ejercicios 1. Definir las siguientes funciones y determinar su tipo: a) Cinco, que dado cualquier valor, devuelve 5. b) pot, que toma un entero y un número, y devuelve el resultado de elevar el segundo a la potencia dada por el primero. 2. 3. c) xor, el operador de disyunción exclusiva. d) max3, que toma tres números enteros y devuelve el máximo entre ellos. Dar al menos dos ejemplos de funciones que tengan cada uno de los siguientes tipos: a) (Int Int) b) Int Bool Int Reescribir la siguiente definición sin usar let, where o if: greater (x,y) = if x > y then True else False 4. Sabiendo que el máximo de dos números se puede calcular según la siguiente expresión: máximo (x; y) = (x + y) + │x – y │ 2 Escribe una función máximo en Haskell que tome dos enteros y devuelva el mayor. ¿Qué expresión escribirías en Haskell para calcular el máximo de 10 y 20 usando la función anterior? ¿Y el máximo de 10*3 y 40? 5. Escribe una función entre0y9 en Haskell que tome un entero y devuelva Trae si está entre 0 y 9 o False en caso contrario. 1 Universidad Nacional de La Rioja Licenciatura en Sistemas de Información Computación II – Año 2012 6. Escribe una función es MúltiploDe3 en Haskell que tome un entero y devuelva True si éste es múltiplo de 3 o False en caso contrario. 7. Escribe una función variaciones m n que calcule el número de variaciones de n elementos tomados de m en m. Usa para ello la siguiente relación: Escribe otra versión que use esta otra: 8. Escribe una función recursiva que calcule números combinatorios usando la siguiente relación: 9. Sea la siguiente función para calcular el máximo de sus tres argumentos: Pruébala con los siguientes valores y comprueba que devuelve el resultado adecuado: 2 Universidad Nacional de La Rioja Licenciatura en Sistemas de Información Computación II – Año 2012 Encuentra un contraejemplo que demuestre que la definición no es correcta, es decir, tres valores de los argumentos para los cuales no se devuelva el máximo. Redefine la función de modo que sea correcta, es decir, que devuelva el resultado adecuado para cualquier combinación de argumentos. 10. Define tres funciones (max2, max3 y max4) para calcular el máximo de dos, tres y cuatro enteros. (AYUDA: usa max2 para definir max3 y max4). 3