Next: Über dieses Dokument
M. Sperber Sommersemester 1996
Funktionale Programmierung
Blatt 1
Abgabe: 24.4.1995
- [5 Punkte] Geben Sie Definitionen für die logischen
Operationen band, bior, bxor :: (Bool, Bool) -> Bool sowie
bnot :: Bool -> Bool an.
- [5 Punkte] Programmieren Sie Funktionen g_c_d,
l_c_m :: Int -> Int -> Int zur Bestimmung des größten
gemeinsamen Teilers bzw. des kleinsten gemeinsamen Vielfachen
zweier Zahlen.
- [5 Punkte] Schreiben Sie eine Funktion
partition_list :: (a -> Bool, [a]) -> ([a], [a]), so daß
partition_list (f, l) ein Paar
(
,
) liefert, in dem
genau die Elemente x von l enthält mit
f x == True und
die Elemente x mit
f x == False.
- [5 Punkte] Definieren Sie den Datentyp Rational für rationale
Zahlen mit den arithmetischen Operationen Addition, Subtraktion,
Multiplikation und Division. Benutzen Sie eine eindeutige
Darstellung.
- [10 Punkte] Geben Sie eine Funktion length' :: [a] -> Int an,
welche die Länge einer Liste berechnet. length' soll
selbst nicht rekursiv sein, darf aber bspw. foldl oder
foldr aufrufen.
Michael Sperber [Mr. Preprocessor]
Mon Apr 21 10:15:32 MST 1997