There are (optionally) two parts to a function definition. The first part (conceptually,
not necessarily within a listing) is the type signature of a function. In a function, the type
signature defines all the types of the input, and the type of the output. Some analogous
C definitions are given in the end-of-line comments in the example.