next up previous
Next: Über dieses Dokument

M. Sperber Sommersemester 1996


Funktionale Programmierung


Blatt 1

Abgabe: 24.4.1995

  1. [5 Punkte] Geben Sie Definitionen für die logischen Operationen band, bior, bxor :: (Bool, Bool) -> Bool sowie bnot :: Bool -> Bool an.
  2. [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.
  3. [5 Punkte] Schreiben Sie eine Funktion partition_list :: (a -> Bool, [a]) -> ([a], [a]), so daß partition_list (f, l) ein Paar ( tex2html_wrap_inline47 , tex2html_wrap_inline49 ) liefert, in dem tex2html_wrap_inline47 genau die Elemente x von l enthält mit f x == True und tex2html_wrap_inline49 die Elemente x mit f x == False.
  4. [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.
  5. [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