Guards werden immer dann verwendet, wenn, abhängig von boolschen Bedingungen Berechnungen ausgeführt werden sollen. Im Prinzip handelt es sich um eine Fallunterscheidung, wobei nicht explizit abgeprüfte Fälle durch den otherwise Fall abgefangen werden. Eine Entsprechung der der if - then - else Klausel in imperativen Sprachen ist naheliegend.
01 max2 a b :: Int -> Int -> 02 03 max2 a b 04 | a <= b = b 05 | a > b = a |
01 vorgaenger1 :: Int -> Int 02 03 vorgaenger1 n 04 | n == 0 = 0 05 | otherwise = n -1 |
01 vorgaenger2 :: Int -> Int 02 03 vorgaenger2 0 = 0 04 vorgaenger2 (n + 1) = n |