www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

Luks

Gepostet:
09.12.2009 13:58

   
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]
sortBy cmp = foldr (insertBy cmp) []

insertBy :: (a -> a -> Ordering) -> a -> [a] -> [a]
insertBy cmp x [] = [x]
insertBy cmp x ys@(y:ys') = if cmp x y == GT
then y : insertBy cmp x ys'
else x : ys


danke für jede unterstützung
Zum Seitenanfang    
 
Luks

Gepostet:
09.12.2009 13:59

   
achso, mein ansatzt wäre:

type Name = String
type Vorname = String
type Klausur = String
type Note = Double

compPair :: ((Name,Vorname),(Klausur,Note)) -> ((Name,Vorname),(Klausur,Note)) -> Ordering
compPair xs = sortBy Name xs



sortBy :: (a -> a -> Ordering) -> [a] -> [a]
sortBy cmp = foldr (insertBy cmp) []

insertBy :: (a -> a -> Ordering) -> a -> [a] -> [a]
insertBy cmp x [] = [x]
insertBy cmp x ys@(y:ys') = if cmp x y == GT
then y : insertBy cmp x ys'
else x : ys
Zum Seitenanfang