type wertpapier = { bez : string; wert : int } type kunde = { name : string; portfolio : (int * wertpapier) list } (* drei moegliche Loesungen fuer Teil c) *) let rec portfoliowert portfolio = match portfolio with [] -> 0 | (a,w)::ws -> a * w.wert + portfoliowert ws let rec portfoliowert = function [] -> 0 | (a,w)::ws -> a * w.wert + portfoliowert ws let rec portfoliowert = List.fold_left (fun s (a,w) -> s + a * w.wert) 0 let kundenwert k = portfoliowert k.portfolio let rec anzahl praedikat kunden_liste = match kunden_liste with [] -> 0 | k::ks -> anzahl praedikat ks + if praedikat k then 1 else 0 (* drei moegliche Loesungen fuer Teil f) *) let rec filter praedikat kunden_liste = match kunden_liste with [] -> [] | k::ks -> if praedikat k then k::filter praedikat ks else filter praedikat ks let filter praedikat kunden_liste = List.filter praedikat kunden_liste let filter = List.filter let grosskunden = filter (fun k -> kundenwert k >= 1000000)