Gepostet: |
sortBy /compPair | ||||||||||
sorry, hatte die überschrift vergessen: hey,kann mir jemand erklrren, wie sortBy funktioniert? hintergrund is, dass ich folgende aufgabe habe: ich soll eine list sortieren deren elemente vom typ student sind student = (Name,Vorname),(Klausur,Note) type Name = String type Vorname = String type Klausur = String type Note = Double die funktion soll folgende struktur haben und mit sortBy arbeiten: compPair :: ((Name,Vorname),(Klausur,Note)) -> ((Name,Vorname),(Klausur,Note)) -> Ordering sortiert werden soll nach namen (und ggf. vornamen) alphabetisch und nach prüfungsnoten aufsteigend gegeben ist: sortBy :: (a -> a -> Ordering) -> [a] -> [a] mein ansatz:
|
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Hallo, sortBy sortiert eine Liste mit Hilfe der übergebenen Funktion. Das heißt die Funktion bestimmt wie ein Vergleich zwischen zwei Elementen des gleichen Typs aussieht. Ein einfaches Beispiel: vergleiche :: Int -> Int -> Ordering sortBy wird nun mit vergleiche und einer Liste von Zahlen aufgerufen und sortiert die Liste entsprechend. Was du nun machst, ist eine Funktion wie vergleiche zu implementieren (nämlich compPair), die zwei Studenten bekommt und für die beiden entscheidet, welcher von beiden "kleiner" als der andere ist, d.h. nach Namen, bei Namengleichheit nach Vornamen usw. sortBy wird dann mit compPair aufgerufen (nicht andersrum!) und sortiert eine Liste von Studenten. sortBy Name geht nicht (wäre auch zu einfach ;-) ), denn Name ist ein Typ und Typen können keine Parameter von Funktionen sein. Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||