-- Ausleihe einer Biblithek (vereinfachtes Modell) type Benutzer = String type Buch = String type Datenbank = [(Benutzer,Buch)] -- Datenbank der Ausleihe beispielAusleihe :: Datenbank beispielAusleihe = [("Anna","Asterix"),("Berta","Obelix"),("Anna","Obelix")] -- Lesende Funktionen (Lookup functions) gelieheneBücher :: Datenbank -> Benutzer -> [Buch] gelieheneBücher db p = [buch | (ben,buch) <- db, ben == p ] leiher :: Datenbank -> Buch -> [Benutzer] leiher db b = [ben | (ben,buch) <- db, buch == b ] -- Schreibende Funktionen (Update functions) ausleihe :: Datenbank -> Benutzer -> Buch -> Datenbank ausleihe db p b = (p,b) : db rückgabe :: Datenbank -> Benutzer -> Buch -> Datenbank rückgabe [] p b = error ("Der Benutzer " ++ p ++ "hat das Buch " ++ b ++ "nicht entliehen und kann es daher nicht zurückgeben!") rückgabe (benbuch:db) p b = if benbuch == (p,b) then db else benbuch : rückgabe db p b test1 :: Datenbank test1 = ausleihe beispielAusleihe "Cäsar" "Kleopatra" test2 :: Datenbank test2 = rückgabe test1 "Berta" "Obelix"