Ordenación de estructuras
Las notas de los dos primeros exámenes se pueden representar mediante el siguiente tipo de dato
data Notas = Notas String Int Int deriving (Read, Show, Eq)
Por ejemplo, (Notas "Juan" 6 5) representar las notas de un alumno cuyo nombre es Juan, la nota del primer examen es 6 y la del segundo es 5.
Definir la función
ordenadas :: [Notas] -> [Notas]
tal que (ordenadas ns) es la lista de las notas ns ordenadas considerando primero la nota del examen 2, a continuación la del examen 1 y finalmente el nombre. Por ejemplo,
λ> ordenadas [Notas "Juan" 6 5, Notas "Luis" 3 7] [Notas "Juan" 6 5,Notas "Luis" 3 7] λ> ordenadas [Notas "Juan" 6 5, Notas "Luis" 3 4] [Notas "Luis" 3 4,Notas "Juan" 6 5] λ> ordenadas [Notas "Juan" 6 5, Notas "Luis" 7 4] [Notas "Luis" 7 4,Notas "Juan" 6 5] λ> ordenadas [Notas "Juan" 6 4, Notas "Luis" 7 4] [Notas "Juan" 6 4,Notas "Luis" 7 4] λ> ordenadas [Notas "Juan" 6 4, Notas "Luis" 5 4] [Notas "Luis" 5 4,Notas "Juan" 6 4] λ> ordenadas [Notas "Juan" 5 4, Notas "Luis" 5 4] [Notas "Juan" 5 4,Notas "Luis" 5 4] λ> ordenadas [Notas "Juan" 5 4, Notas "Eva" 5 4] [Notas "Eva" 5 4,Notas "Juan" 5 4]