2.2.6 The function data type, part 2

There's one data type that I more or less ignored earlier, and that's the
function type. Just as there's a type for objects, functions have a
type as well. You can have function variables and call assigned functions
through those variables. Mostly the function type is used in conjunction
with other functions that use them as parameters.

Assigning actual function references to them, however, is a bit tricker.
You can assign any kind of function to a function variable; efun, sfun or
lfun is just the same. You can even assign external function references.

Assigning a function reference requires that the function already is
defined, either itself or by a function prototype in the header. Let's
assume for now that you're only interested in the simple reference to
the function.