Die folgenden Aufgaben 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.
max 3 4 negate 3
3 `div` 4 div 3 4
div 3 -4 2**3 - 4
True && (1/0 == 0) False == (2 <= 3)
"A" = 'A' "A" == 'A'
"ABC" == ['A','B','C']
let x = 'A' in x:"BC" let x = "A" in x == x
let x = "A" in x /= x
let x = "A" in not x == x
let x = "A" in not (x == x)
Untersuchen Sie:
(id.max)3 2 (id.max 3) 2 id.(max 3) 2
id max 3 2 id (max 3) 2 (id max) 3 2
(id max 3) 2 id (max 3 2) max id 3 2
f:: (Int->Int->Int)->Int->[Int]->Int
f g e [] = e
f g e (x:xs) = g x (f g e xs)
Untersuchen Sie:
f max 5 [4,3,2,1]
f div 1 [5,4,3,2]