First, let's reiterate what a function type is:

The type of sum is a function that takes two Int values and returns one Int value. We can assign both functions and closures to it, as they are essentially the same thing:

We can also assign an operator to it:

This is because an operator is a function (the parentheses around the + operator are just to signal that we want to use it as a function, not add things together right away). The definition of the + operator for Int is:

So, whenever a function has a parameter of a function type, we can supply an operator, as long as the input and output match:

Initialisers can also be used as functions:

We have to use .init to show that we are referring to an initialiser, not the type Int itself.

If several functions have the same name, or initialisers have the same number and types of arguments, we can specify which one we are referring to by including the argument labels. Here are the full names of the preceding functions: