=== Repaso de funciones no recursivas y recursivas simples === * Definir la función **estanOrdenados**, //estanOrdenados :: (Int,Int) -> Bool//, que dado un par de números enteros devuelve True si los números están ordenados de menor a mayor. * Definir la función **cuadradoOcubo**, //cuadradoOcubo:: Int -> Int//, que dado un entero //n//, devuelve su cuadrado si //n// es par y su cubo si //n// es impar. * Definir la función **dobleONada**, //dobleONada Int -> Int//, que dado un entero //n//, devuelve el doble (es decir, //n*2//) si //n// es positivo y 0 si //n// es negativo. * Definir la función **multiplo**, //multiplo :: Int -> Int -> Bool//, que dados dos enteros //n// y //m// determina si //n// es múltiplo de //m//. * Definir la función **restaPositiva**, //restaPositiva:: (Int,Int) -> Int//, que dado un par de enteros, devuelve el valor de la resta del mayor menos el menor. * Definir la función **librosRecomendados**, //librosRecomendados :: [(String,Bool)] -> [String]//, que dada una lista de pares //(nombre,esRecomendado)//, devuelve una lista con sólo los nombres de los libros recomendados. Ejemplo: librosRecomendados [(``El nombre de la Rosa'',False),(``Los pilares de la Tierra'',True),(``Luces del Norte'',True)] = [``Los pilares de la Tierra'',``Luces del Norte]. * Definir la función **peliculasAccion**, //peliculasAccion :: [(String,Bool)] -> [String]//, que dada una lista de pares //(nombre,esAccion)//, devuelve una lista con solo los nombres de las películas de acción. Ejemplo: peliculasAccion [(``Rambo'',True),(``E.T.'',False),(``Duro de Matar'',True)] = [``Rambo'',``Duro de Matar'']. * Definir la función **esSigno**, //esSigno :: String -> (String,String,String) -> Bool//, que dado un string //s// que representa un signo zodiacal, una tresupla //(n,t,z)// que representa el nombre, el trabajo y el signo zodiacal de una persona, devuelve True si la persona es del signo //s// y False si es de cualquier otro signo. Ejemplo: esSigno ``aries'' (``Ana'',''recepcionista'',''aries'') = True. Ejemplo: esSigno ``leo'' (``Mario'',''tornero'',''libra'') = False. * Definir la función **cuadrados**, //cuadrados :: [Int] -> [Int]//, que dada una lista de enteros //xs// devuelve una lista con el cuadrado de cada uno de los miembros de //xs//. * Definir la función **soloEntre0y9**, //soloEntre0y9 :: [Int] -> [Int]//, que dada una lista de enteros devuelve una lista que contiene sólo aquellos miembros de la lista original mayores o iguales que 0 y menores o iguales que 9. * Definir la función **sumatoriaNegativa**, //sumatoriaNegativa :: [Int] -> Int//, que dada una lista de enteros, devuelve el resultado de restar cada uno de ellos. Ejemplo: sumatoriaNegativa [1,2,3] = -6. * Definir la función **productoTriplas**, //productoTriplas :: [(Int,Int,Int)] ->// Int, que dada una lista de triplas de enteros, devuelve el resultado de multiplicar todos los miembros de todas las triplas. * Definir la función **suma2ysuma**, //suma2ysuma:: [Int] -> Int//, que dada una lista de enteros, suma 2 a cada uno de sus elementos y devuelve la suma de todos ellos. Ejemplo: suma2ysuma [1,2,3] = 12. * Definir la función **sumatoriaEsPar**, //sumatoriaEsPar:: [Int] -> Bool//, que dada una lista de enteros, suma cada uno de sus elementos y devuelve True si el resultado es par y False si es impar. Ejemplo: sumatoriaEsPar [1,2,3,4] = True. * Definir la función **cuantos0**, //cuantos0 :: [Int] -> Int//, que dada una lista de enteros devuelve un entero con la cantidad de n˙meros 0 que hay en la lista original. Ayuda: recordar cómo se hizo la función "longitud". * Definir la función **cuatroCabezas**, //cuatroCabezas :: [ [ a ] ] -> (a,a,a,a)//, que dada una lista de listas de cualquier tipo devuelve una cuatrupla con los primeros elementos de las cuatro primeras listas de la lista original. Ayuda: se puede usar la función "head" definida en el preámbulo, o definir la función "cabeza". * Definir la función **cuantosEntre**, //cuantosEntre :: Int -> Int -> [Int] -> Int//, que dados dos números //n// y //m// y una lista de enteros //xs//, devuelve la cantidad de números de //xs// que están entre //n// y //m//. Ejemplo: cuantosEntre 30 40 [15,45,36,20,63,32] = 2 * Definir la función **paresHasta**, //paresHasta :: Int -> [Int]//, que dado un número devuelve la lista de pares que hay desde 0 hasta ese número. * Definir la función **potencia**, //potencia:: Int -> Int -> Int//, que dado dos enteros //x// y //n//, calcula //x^n// usando multiplicación y recursividad. * Definir la función **multiplica**, //multiplica:: Int -> Int -> Int//, que dado dos enteros //x// y //y//, calcula //x * y// usando sólo suma y recursividad.