A function can be defined using guards, which can be thought of classifying behaviour according to input.
Take the following function definition:
absolute :: Int -> Int -- definition restricted to Ints for simplicity
absolute n = if (n < 0) then (-n) else n
We can rearrange it using guards:
absolute :: Int -> Int
absolute n
| n < 0 = -n
| otherwise = n
In this context otherwise
is a meaningful alias for True
, so it should always be the last guard.