Funktionen werden ohne Klammern aufgerufen: quadrat 7. Mehrere Argumente trennst du mit Leerzeichen (addiere 2 3). Mit Guards (|) wählst du Fälle, mit Pattern Matching zerlegst du Argumente. where definiert Hilfswerte, if ... then ... else ist ein Ausdruck.
Funktionen mit mehreren Argumenten sind in Wahrheit Ketten von Ein-Argument-Funktionen (Currying), deshalb kannst du sie teilweise anwenden.
note :: Int -> String
note punkte
| punkte >= 90 = "sehr gut"
| punkte >= 50 = "bestanden"
| otherwise = "nicht bestanden"
fakultaet :: Integer -> Integer
fakultaet 0 = 1
fakultaet n = n * fakultaet (n - 1)
addiere :: Int -> Int -> Int
addiere a b = a + b
main :: IO ()
main = do
putStrLn (note 73)
print (fakultaet 10)
let plus5 = addiere 5 -- teilweise Anwendung
print (plus5 3) -- 8Merke
- Aufruf ohne Klammern:
f x y - Guards
|und Pattern Matching wählen Fälle - Currying erlaubt teilweise Anwendung
Aufgabe
Schreibe `istGerade :: Int -> Bool` mit Guards.