Home
 

Test 2

Test 2

Die Aufgaben 1 und 2 präsentieren Haskell-Ausdrücke, für die Sie jeweils den Wert angegeben sollen oder aber ob ein Syntax-, Typ- oder Laufzeitfehler vorliegt. (Vermerken Sie Ihre Antwort bitte auf diesem Blatt hinter dem Ausdruck und verwenden Sie für die drei Fehlerfälle die Abkürzungen SF, TF, LF !) Es wird der übliche Kontext (standard prelude) angenommen.

1.
 True || (1/0 == 0)          False == True && (1/0 /= 0)

True && 0 * (1/0) False && 1/0
False || (True || (1/0 > 0))
let x = 1/(x - 1) in x == 1
2.
Gegeben:
 fix:: (Float->Float)->Float->Float

fix f = repeat_until pred f
where pred x = (abs(f x - x) <= 0.01)
square:: Float->Float
square x = x*x

Was ist (ungefähr):

 fix square 0.01

fix square 0.1
fix square 1.0
3.
Die folgende Funktion soll feststellen, ob eine Liste den Anfang einer anderen bildet. Komplettieren Sie den dritten Fall der Definition (ohne weitere Fallunterscheidung!!).
 initial_part:: [a]->[a]->Bool

initial_part [] _ = True
initial_part _ [] = False
initial_part (x:xs) (y:ys) =
4.
Die Funktion double:: Float->Float sei definiert als double x = 2 * x. Geben Sie die Auswertungsschritte unter lazy evaluation für den Ausdruck
 double (double (1+1)) =>


nextnextupuppreviouspreviouscontentscontents
Next:Test 3Up:Proseminar-TestsPrevious:Test 1
Ronald Blaschke
1998-04-19