Cursosā€Ž > ā€ŽMartes Anualā€Ž > ā€ŽBitĆ”coraā€Ž > ā€ŽBitĆ”cora - Martes MaƱanaā€Ž > ā€Ž

Clase 4

Tarea (TP 3 de Funcional)Ā 

TIP: Recuerden imprimir la GuĆ­a de Lenguajes !

Enunciado

Dado el siguiente archivo .hs por cada punto explicar porque tiene errores y arreglarlos.

Los errores pueden ser tanto de sintaxis como "teóricos" (esto significa que compila pero IGUAL tiene errores que pueden ser conceptuales). Todos los puntos tienen algo para arreglar.

Explicar con sus palabras los errores y proponer una solución (si la misma solución aplica a varios puntos no repetir, aclarar los puntos que soluciona).

"Explicar con sus palabras" significa que no copien el error que les tira Haskell (en caso de que no compile) sino que expliquen desde los conceptos del paradigma por quƩ hay un error ahƭ.

Se intentó elegir nombres que hagan entender por si solos la intención de la función, en caso de no entender qué hace una función determinada envíen sus dudas a la lista del curso pdep-mmt@googlegroups.com

-- tp3.hs

--Punto 1todosIguales elementos = length (filter (head elementos==) elementos) == length elementos--Punto 2todosIguales' elementos = all (fst elementos==) elementos--Punto 3todosIguales'' elementos = all (head elementos==otroElemento) elementos--Punto 4todosIguales''' elementos = all (head.elementos.==) elementos--Punto 5
esNotaAprobada nota = nota >= 4

promedio numeros = sum numeros `div` length numeros
estaAprobado unAlumno = promedio (snd unAlumno) >= 5todosDesaprobaronAlMenosUnaVez alumnos = any (not.estaAprobado) alumnos--Punto 6todosDesaprobaronAlMenosUnaVez' alumnos = all (any (4>) (snd unAlumno)) alumnos--Punto 7todosDesaprobaronAlMenosUnaVez'' alumnos = all (any (\unaNota -> not (estaAprobado unaNota)).snd) alumnos--Punto 8cantidadDePalindromos palabras = length (filter esPalindromo palabras)esPalindromo unaPalabra | reverse unaPalabra /= unaPalabra = False | otherwise = True--Punto 9esApestosa (nombre,director,puntuaciones) = all (3>) puntuacionesdirectorPelicula (nombre,director,puntuaciones) = directordirectoresApestosos peliculas = [directorPelicula (nombre,director,puntuaciones) | (nombre,director,puntuaciones) <- peliculas, all (3>) puntuaciones]--Punto 10 (BONUS: esto significa que su resolución es opcional)find f lista = head [x | x <- lista, f x ]maximum = find (\x -> all (x>) lista)

Resumenes

Resumen Clase 4 Funcional - mm 2012