If the list is empty, the result is the initial value and if not, we recurse immediately, making the new initial value the result of combining the old initial value with the first element.
If the list is empty, the result is the initial value. If not, fold the tail of the list using as new initial value the result of applying f to the old initial value and the first element.