Funktionale Programmierung WS07/08 E. Fehr Aufgabenblatt 4 Abgabe bis Dienstag, dem 13.11.2007 Aufgabe 1) Überprüfen Sie folgenden Text daraufhin, ob er ein syntaktisch korrektes HaskellSkript darstellt. Wenn ja, erläutern Sie seine Bedeutung: f x = 3 + 2+ x x = 4 Aufgabe 2) Schreiben Sie eine Haskell-Funktion max3, die von drei Int-Werten die größte liefert. a) Entwerfen Sie einen Black-Box-Test für dieses Problem. b) Entwickeln Sie zu Ihrer Lösung einen White-Box-Test. Aufgabe 3) Betrachten Sie folgende Syntaxregeln: small large digit decimal varid float exponent expr infixOp → → → → → → | → → | | → a|b|...|z|_ A|B|...|Z 0|1|...|9 digit {digit} small {small|large|digit|’|_} decimal.decimal [exponent] decimal exponent (e|E) [+|-] decimal varid|decimal|float expr infixOp expr (expr) +|-|*|/ a) Zeigen Sie, dass (4+z’) * 3.0e7 ein Ausdruck ist, indem Sie die Herleitung dieses Ausdrucks aus dem Symbol expr als Graph notieren. b) Geben Sie diese Syntaxregeln in EBNF an. c) Schreiben Sie die Regel für decimal als Syntaxdiagramm. Aufgabe 4) Schreiben Sie eine Haskell-Funktion zur Berechnung des größten, gemeinsamen Teilers zweier natürlicher Zahlen.